OIDC QoA Specification
Previously, application owners had to select the exact authentication methods (password, mTAN, AuthApp, Vasco, Kerberos, Smartcard, Mobile ID, FIDO security key) that the user could use to access the application.With the new QoA concept, the corresponding QoA class can be specified directly in the OIDC, thus opening up the possibility of presenting the user with all authentication methods that at least correspond to this QoA level.
The information regarding the QoA concept can be found at: Quality of Authentication (QoA)
eIAM "AuthnContextClasses"
These are the new "AuthnContextClasses" to request authentication of a user:Authentication Level | AuthnContextClasses |
---|---|
QoA10 | urn:qoa.eiam.admin.ch:names:tc:ac:classes:10 |
QoA20 | urn:qoa.eiam.admin.ch:names:tc:ac:classes:20 |
QoA30 | urn:qoa.eiam.admin.ch:names:tc:ac:classes:30 |
QoA40 | urn:qoa.eiam.admin.ch:names:tc:ac:classes:40 |
QoA50 | urn:qoa.eiam.admin.ch:names:tc:ac:classes:50 |
QoA51 | urn:qoa.eiam.admin.ch:names:tc:ac:classes:51 |
QoA60 | urn:qoa.eiam.admin.ch:names:tc:ac:classes:60 |
Example of an OIDC authentication request "acr_values"
You can request a specific QoA with the parameter acr_values in the authentication request. The value of the parameter must be one of the QoA urn (e.g. urn:qoa.eiam.admin.ch:names:tc:ac:classes:40), the urn must be decoded by url. If you specify an invalid acr value, authentication will fail.These parameters must be url-encoded
Paramteter | Remarks |
---|---|
response_type | Has always to be code. As we only support the authorization code code flow |
scope | Scope is always openid. |
client_id | Will be provided by eIAM during the integration of the app |
redirect_uri | All redirect urls which will be used by the application needs to be provided to eIAM. The url which is provided with this parameter must be known by us otherwiese the request will fail. |
acr_values | This parameter is used to request the qoa which is required to access the application. |
Example of the "OIDC response"
We consider the requested QoA level as the minimum. If the user reaches a higher level, we accept it and inform the application in the response.