Applications over SAML and RS256
Applies to: identity 0.27 · Checked: 26.09.2026
Identity is the sign-in provider for the organisation's applications. Most of them speak OpenID Connect, but there are two common exceptions, and both are covered:
- an application that speaks only SAML 2.0 (older wikis, trackers, boxed systems);
- an OIDC application whose library verifies only RS256 signatures.
In both cases the person sees identity's usual sign-in page: password, second factor, passkeys, sign-in through the company provider — the same as for every other application.
An OIDC application that needs RS256
By default identity signs ID tokens with EdDSA. Beside that key lives an RSA-2048 key,
published in the JWKS (/oauth/jwks, kty: RSA) and listed in discovery. For an application
to receive ID tokens signed with RS256, set in the identity console, Applications → Edit,
in options:
{ "id_token_alg": "RS256" }
Access tokens stay EdDSA — only identity itself reads them.
An application over SAML
Sign-in started at the application (SP-initiated Web SSO) is supported, over the HTTP-Redirect and HTTP-POST bindings.
-
Give the application identity's metadata:
https://<identity address>/saml/metadataIt carries identity's entity ID (
https://<identity address>/saml), the sign-in address/saml/ssoand the signing certificate. If the application cannot read metadata from an address, copy those three values by hand. -
Register the application in the identity console, Applications → SAML applications → New:
Field What it is entity_idthe application's entity ID — from its settings or metadata namethe name the person sees on the sign-in page acs_urlsits Assertion Consumer Service addresses; the response goes only there, matched exactly nameidwhat to name the person by: username(the account name) oremailattributeswhether to send the attributes username,email,displayName,groups -
Try it: open the application and press its "Sign in with SSO".
The assertion is signed (and so is the whole response): RSA-SHA256, SHA-256 digest, Exclusive
C14N canonicalization. Its audience is the application's entity ID, its recipient the ACS
address, it refers to the application's request and is valid for five minutes. groups
are identity's group ids, as in OIDC.
- Sign-in started at identity (IdP-initiated) is refused on purpose: it is the flow sign-in forgery attacks start from. Sign-in always starts at the application.
- The application's request signature is not checked. The request is bound to the application by its registration and the exact ACS address — the response goes nowhere else.
- No Single Logout, no encrypted assertions, no import of the application's metadata.
If nameid is email and the account has no address, the application receives an
InvalidNameIDPolicy refusal. Every sign-in and refusal is written to identity's audit log as
saml.sso; registry changes as saml.sp.put and saml.sp.delete.
Key rotation
A rotation (POST /control/oidc/keys/rotate) replaces both keys at once — EdDSA and RSA. The old certificate
stays in the metadata while tokens it signed are alive, so an application that re-reads the
metadata moves to the new one by itself. An application with the certificate pasted in by hand
needs the new one pasted after a rotation.
On an installation with certified GOST cryptography there is no RSA key: RS256 and SAML are not available there, and the console says so at registration.