Web SSO eligibility checker SPI
1. Overview
For an authorisation request to qualify for
single sign-on (SSO) the Connect2id server checks for a
present user session, and if the request or
the client registration specifies it, for additional conditions, such as the
authentication strength (acr_values) of the session or the time that passed
since the user was last challenged to authenticate (max_age). Only then the
request is allowed to skip the user authentication
step.
The Connect2id server, starting with v16.1, enables deployments to specify additional, custom checks whether a particular request qualifies for web SSO. One such use case is to always require users to authenticate when logging into or authorising a critical client application.
Note that this is a feature of web-based SSO. To implement a similar check for native SSO use the device SSO handler SPI.
2. Web SSO eligibility checker SPI
A plugin interface (SPI) enables deployments to specify additional checks whether an OAuth 2.0 authorisation / OpenID authentication request is allowed to benefit from SSO.
Prior to calling the SPI the Connect2id server ensures the following SSO conditions are met for a request:
- 
A subject (end-user) session is present.
 - 
The subject session authentication lifetime (
auth_life), if specified for the session, has not expired. - 
If the request is an OpenID authentication request with a maximum authentication age (
max_age) or an ACR level (acr_values), that the subject session satisfies them. - 
If a particular user identity is required (via an
id_token_hint), that it matches session subject. - 
The request doesn’t specify a prompt
login,select_accountorcreate. - 
A Connect2id server op.authz.alwaysPromptForAuth configuration doesn’t trigger an authentication prompt.
 
If the request is eligible for SSO the isEligible check method returns
true. Else the method returns false, to cause the Connect2id server to
prompt the end-user for authentication.
3. How to develop your own web SSO eligibility checker
First, read the guide for developing, annotating and packaging an SPI-based plugin.
The plugin must implement the WebSSOEligibilityChecker SPI defined in the Connect2id server SDK:
| Git repo | https://bitbucket.org/connect2id/server-sdk | 
|---|
If the Connect2id server detects an SPI implementation at startup it will log
its loading under OP2140:
INFO MAIN [main][OP2140] Loaded web SSO eligibility checker: : class=com.nimbusds.openid.connect.provider.spi.impl.websso.checkers.ExtraChecker
Note, the Connect2id server can load at most one web SSO eligibility checker at startup.