Non-interactive OIDC authentication in IAM flows
The OIDC protocol supports the
parameter that can be used by applications (Relying Parties) to tell Airlock IAM (as OP/authorization server) not to interact with the end-user, such as showing a login page.prompt=none
Instead of interactively authenticating the end-user, Airlock IAM tells the application (RP) that interactive authentication is required. The application can then decide what to do.
The feature can also be used by the application to just find out whether the end-user would have to be authenticated interactively.
Using prompt=none in IAM authentication flows
If a user needs to be authenticated, Airlock IAM starts the corresponding authentication flow – even if the prompt=none
parameter was passed by the application (RP). Thus, flows must be able to handle the situation correctly, by not starting an interaction with the end-user.
To achieve this, the OpenId Connect prompt=none Condition plugin can used.
There are several ways to use the condition:
- With a Message Acknowledgment Step
Put a Message Acknowledgment Step before the first interactive step. As skip condition use the Logical NOT condition with the OpenId Connect prompt=none Condition, so the message step is skipped if nopromt=none
request was sent. This configuration results in theerror=interaction_required
HTTP parameter being sent to the application (RP) and it does not result in increasing failure counters.
Note that if the first interactive step has skip conditions, you need to also use them in the Message Acknowledge Step (using Logical OR) and you need to put another Message Acknowledge Step before the next (possible) interactive step. - With an AbortStep
The same as with the Message Acknowledge Step above but using the Abort Step. This configuration results in theerror=access_denied
HTTP parameter being sent to the application (RP). - As Precondition (not recommended)
Negated with the Logical NOT condition, the OpenId Connect prompt=none Condition can be used as a precondition to the first interactive step. The flow will then fail before the interaction takes place but it also increases the failed login counters of the step with the precondition. This may not be desired.