Step up authentication OpenID Connect

Author:

Sheila Albertelli

Created at:

Jul 2017

Updated at:

Jul 2017

Written by Léonard Moustacchis

A common use case in access management is step up authentication. ForgeRock AM is very good for that. The OIDC standard talks about step up authentication and level of authentication requested by the client.

To do so, one could use acr_values which is a voluntary claim, but the openid specification says : « the Authorization Server is not required to provide this Claim in its response. »
In order to achieve that, the essential claim acr is used, it is describe in chapter 5.5.1.1. Requesting the “acr” Claim of the OpenID Core (see: http://openid.net/specs/openid-connect-core-1_0.html#acrSemantics)

Note
In order to demonstrate the functionality, use the following example based on AM 5.1

In the AM console, browse to Realms >Realm Name>Services, and then click OAuth2 Provider.
Configure the mapping between acr values (in the example 1=ldapService and 2=HOTP chain) in the authorization request and AM authentication chains.

https://backstage-community-prod.storage.googleapis.com/original/2X/4/4b3f0b4082e7f6d356a49ba63910546f293c8f0d

https://backstage-community-prod.storage.googleapis.com/original/2X/1/1f06c8329445595ea1c8d71d86994f77c6ae0a0b

Step 1:
The url decoded value of the claims parameter:

{
    “id_token”:
        {
            “acr”:
                {
                    “essential”: true,
                    “values”:[“1”]
                }
        }
}

The user enters the login / password

The id tokens returns acr=1

Step 2:

The url decoded value of the claims parameter:

{
    “id_token”:
        {
            “acr”:
                {
                    “essential”: true,
                    “values”:[“2”]
                }
        }
}

https://backstage-community-prod.storage.googleapis.com/original/2X/3/3f1ab3c26c310b59c48a6046f19771b2e9a201aa

Note that this is a real step up authentication, the session is alive from step 1 to step 2, the OTP is sent to the user connected at the first step.