Openid-connect Dynamic Register
Introduction
OpenID-ConnectOpenid-connect hasallows a clear design suitable for both frontend and backend.
SAML has a clear design for the frontend, but the backend usage is harder as the security in SAML cannot be placed at transport layer. Instead, in must be placed at document level. Additionally, it requires intensive use of cryptographic algorithms for signature and encryption.
That’s why some applications put a SAML frontend protection for both the frontend and relay on the session cookies generated by the fronted for backend access.
The problem arises when one service provider needsregisters todynamically invoke some services from a SAML enabled application that does not support or implement WS-Security.
To solve it, Soffid Identity Provider provides aother service to get the session cookies required to access to a SAML application.providers.
DataDynamic flowRegister
The rest service /userinfo/impersonate?url=…. will do the job, and will return the cookies to use to act upon the target application impersonating the current user.
Request
POST https://<YOUR_SERVER>:2443/register
{
"
"
["
"
"
My Example "
"
"
"
"userinfo_encrypted_response_alg": "RSA1_5",
"userinfo_encrypted_response_enc": "A128CBC-HS256",
"contacts": ["ve7jtb@example.org", "mary@example.org"],
"request_uris":
["https://client.example.org/rf.txt#qpXaRLh_n93TTR9F252ValdatUQvQiJi5BDub2BeznA"]
}
|
Parameters
- URL
: is the access URL for the target application. - Authorization: contains the
oauthBearedtoken.Token.
Response
The response contains the list of cookies to send to the target application.
{
"
0, "
"
"
[ "
"
],
"
"
Example 7", "client_id": "DR_7"
}
|
Request
Once the application has got the list of cookies, it can invoke the target application URL
|
As security measures, the impersonation profile must be enabled, and the source application must be entitled to use it against the target application
Response
{
"client_secret_expires_at": 0,
"registration_client_uri": "https://iam-sync-tenantidp.soffidnet:2443/register?client_id=DR_7",
"redirect_uris": [
"https://client.example.org/callback",
"https://client.example.org/callback2"
],
"client_name": "My Example 7",
"client_id": "DR_7"
}
|