Turn on the IPSIE SL1 profile
One setting, ipsieSl1.enabled, turns on the IPSIE SL1 rules that this server cannot apply by default. The setting
is off by default. While the profile is on, the server refuses applications that break the profile’s rules, so run
the readiness check before you switch.
The OpenID Foundation’s IPSIE working group (Interoperability Profile for Secure Identity in the Enterprise) writes profiles for enterprise sign-in: rules an identity provider and its applications follow so that a company can trust the whole chain. Its IPSIE SL1 OpenID Connect Profile, and the IPSIE Common Requirements it points to, say what the identity provider must do.
This server already meets much of SL1 by default: every ID token carries auth_time, acr and
session_expiry, authorization codes last 60 seconds and are used once, and PKCE is required. The rest
cannot be a default, because each rule breaks something other standards allow. A native app may return to
http://127.0.0.1, an MCP client may register itself, and acr_values is only a hint in OpenID Connect.
Half of IPSIE SL1 cannot be a default explains the split and when
to turn the profile on.
Seven rules the IPSIE SL1 profile enforces
Section titled “Seven rules the IPSIE SL1 profile enforces”While the profile is on:
- Redirect URIs must use
httpsor the application’s own scheme.httpis refused,localhostincluded, at sign-in and at sign-out. - Only registered applications. An administrator creates them in the console, or they register with an initial access token. A client id that is a URL works only when an administrator created an application under that URL. The server never fetches a client metadata document.
- Only the code flow.
response_type=noneis refused. - Every access token is bound to the application’s key with DPoP. A token request without a DPoP proof is refused, whatever the grant.
- Only PS256, ES256 and EdDSA signatures. An application that chose no algorithm, or kept the
RS256default, getsPS256signatures, andPS256is written into its record the next time the record is saved. A newRS256orHS256registration is refused, and so isclient_secret_jwt. acr_valuesis binding. If the sign-in did not reach a requested level, the application receivesunmet_authentication_requirementsinstead of a token. A sign-in with a second factor satisfies a request for the password level.- A client assertion must name this server’s issuer as its audience, as a single string, not an array.
The console, the administrators’ MCP client, each project’s account page and SCIM provisioning
connections are outside these rules, because they are this server’s own clients. The PS256 default
still applies to them.
Settings and keys the profile requires
Section titled “Settings and keys the profile requires”The switch is refused until every one of these holds:
- DPoP is on (
dpop.enabled); - PKCE is required (
pkce.required); - encryption is on (
encryption.enabled); - dynamic registration is off, or requires an initial access token;
- pushed authorization requests accept no unregistered redirect URI;
- every issuer has a
PS256signing key: the instance, and every project with an address of its own.
Every issuer needs a PS256 key because PS256 is the algorithm the profile gives applications that chose none. See Rotate signing keys for how to generate and promote a key.
Check readiness, then turn the profile on
Section titled “Check readiness, then turn the profile on”-
Open Settings, then Request security. The IPSIE SL1 readiness card lists the settings that stand in the way, the issuers without a
PS256key, and every application the profile would refuse or change, with the reason for each. An agent can read the same answer with thesettings_ipsie_profile_readiness_gettool. -
Fix the settings and generate the keys the card names. Then go through the applications the card lists. An application with an
httpredirect URI, anHS256or other algorithm outside the profile,client_secret_jwtor certificate-bound tokens will stop working. An application on theRS256default will receivePS256signatures instead, so check that it verifies tokens with the key set rather than a fixed algorithm. -
Turn on Enforce the IPSIE SL1 profile and save. The change applies at once, with no restart, and is recorded in the audit trail.
Nothing is rewritten when the profile turns on. An application the profile refuses keeps its record, so turning the profile off restores the application on the next request. An application created by dynamic registration at the root belongs to no project and is not listed by the readiness check; the profile still applies to it.