- DATE:
- AUTHOR:
- Ory Team
Ory Network, Ory Hydra, Ory Kratos, Ory Polis, Ory Elements v26.4.3 released
Ory Network
Configure the length and characters of one-time codes
You can now set the length and characters of the one-time codes that Ory Kratos
Identities sends for login, registration, verification, and account recovery.
Use the Ory CLI or the project API to set
selfservice.methods.code.config.length to a value from 6 to 20, and
selfservice.methods.code.config.alphabet to digits or alphanumeric.
Alphanumeric codes use lowercase letters and digits without easily confused
characters, and users can enter them in any letter case. Codes stay six digits
unless you change these settings.
Ory Account Experience shows a single text field for codes longer than eight characters. If your email or SMS templates describe the code as six digits, update them when you change the format. See One-time code format.
This is now available on Ory Network.
Ory Hydra
Client assertion JWT IDs work with non-UTC database time zones
Ory Hydra now tracks the jti of client assertion JWTs correctly when the
PostgreSQL or CockroachDB session time zone is not UTC. Before, Hydra removed
jti values too early or too late, depending on the time zone offset. As a
result, Hydra could accept a jti that was still in use, or reject a jti
whose earlier use had already expired. See
ory/hydra#3740.
Scopes and audiences containing a pipe character are preserved
A scope or audience value that contains |, such as the SMART App Launch
scope patient/Observation.rs?code=http://loinc.org|1234-5, used to come back
split into several values in the issued access token and the introspection
response, and refreshing such a token failed. Tokens and codes issued after
the upgrade keep these values intact and refresh normally. Tokens issued
before the upgrade still carry the split values until they expire. To restore
a refresh token issued before the upgrade, send the user through the
authorization flow again.
This is now available on Ory Network, for the Ory Enterprise License, and will be part of the next Ory Open Source release.
Ory Kratos
Configure the length and characters of one-time codes
Ory Kratos Identities has two new settings for the one-time codes it sends for
login, registration, verification, and account recovery:
selfservice.methods.code.config.length takes a value from 6 to 20, and
selfservice.methods.code.config.alphabet takes digits or alphanumeric.
Alphanumeric codes use lowercase letters and digits without easily confused
characters, and users can enter them in any letter case. Codes stay six digits
unless you change these settings.
The code input node now carries maxlength, pattern, and a new inputmode
attribute that match the configured format. Render inputmode in custom UIs so
mobile devices show a keyboard with letters for alphanumeric codes. Ory Elements
reads it and shows a single text field for codes longer than eight characters.
See
One-time code format.
Configure the length and characters of one-time codes
You can now set the length and characters of the one-time codes that Ory Kratos
Identities sends for login, registration, verification, and account recovery.
Use the Ory CLI or the project API to set
selfservice.methods.code.config.length to a value from 6 to 20, and
selfservice.methods.code.config.alphabet to digits or alphanumeric.
Alphanumeric codes use lowercase letters and digits without easily confused
characters, and users can enter them in any letter case. Codes stay six digits
unless you change these settings.
Ory Account Experience shows a single text field for codes longer than eight characters. If your email or SMS templates describe the code as six digits, update them when you change the format. See One-time code format.
De-activating an identity revokes its sessions
Setting an identity's state to inactive through the admin API now revokes all
of its sessions. Before, the sessions stayed active and were only rejected
while the identity was inactive, so activating the identity again restored
them. Now an identity that is activated again must sign in again.
This is now available on Ory Network, for the Ory Enterprise License, and will be part of the next Ory Open Source release.
Ory Polis
Failed SAML logouts show up in the Admin Portal
A SAML single logout that fails, when Polis starts it or when the identity
provider answers, now saves an SSO trace, as a failed sign-in does. The trace
holds the tenant, product, connection, RelayState, the issuer and the
LogoutRequest or LogoutResponse, and the Admin Portal labels it "SAML Single
Logout". Its ID is the polis.sso_trace.id on the logout's span and log record.
SSO traces gain an isSLO field.
The polis.idfed.logout.response log record and span now carry the tenant,
product, identity federation app and upstream connection of the logout, and the
log record carries the signed LogoutResponse Polis sends to the service provider
as polis.saml.response, unless SSO_TELEMETRY_REDACT=true. Identity
federation logouts started before this release still complete, without these
attributes.
A signed LogoutResponse from the identity provider that cannot be parsed now
fails with error.type=saml_invalid instead of _OTHER.
An identity federation logout now carries the polis.login.id of the login it
ends. The SessionIndex of a federated SAML response holds the login ID in
place of random digits, keeping its length, and Polis reads it back from the
service provider's LogoutRequest. Unless the app verifies logout request
signatures, the service provider chooses this value, so use it to correlate
telemetry only.
ID tokens Polis issues now carry a polis_login_id claim, the ID of the login.
/api/logout accepts an optional id_token_hint: send the ID token of the
login being ended, expired or not, and the logout's log records and spans carry
that login's polis.login.id. A hint Polis did not sign is ignored and the
logout goes ahead.
A login that goes through the IdP selection page, or the app selection page of
an IdP-initiated login, now keeps its polis.login.id after the user chooses,
instead of starting again with a new one. Polis relays the ID through the page
in a polis_login_id parameter, which is never forwarded to the IdP.
OIDC connection updates keep the provider metadata complete
An update to an OIDC connection through PATCH /api/v1/sso that sent only some
oidcMetadata fields, or an empty value, could save a connection without an
issuer, authorization_endpoint, token_endpoint, userinfo_endpoint or
jwks_uri, and logins through it then failed. This included switching a
connection from its discovery URL to metadata. Polis now rejects such an update
with 400 and keeps the connection as it was. Updates that leave all five
fields in place, including ones that send only the fields that change, work as
before.
SAML logout completes when the IdP answers with the HTTP-Redirect binding
/api/logout/callback now accepts a LogoutResponse sent with the HTTP-Redirect
binding. Previously an identity provider that answered a single logout this way
always got an error, because the response was neither inflated nor checked
against the signature on its query string.
Polis verifies the query-string signature with the IdP certificates stored on
the connection that started the logout, and accepts SHA-256, SHA-384 and SHA-512
signatures only. An unsigned response, a response altered after signing, or a
SAMLResponse or RelayState sent twice is refused with 403 Forbidden. If a
connection stored only the IdP certificate's thumbprint, update it with the IdP
metadata again.
The IdP selection page appears for every tenant with more than one connection
When a tenant and product had more SSO connections than one database page holds, or an identity provider served more apps than that, Polis looked at the first page only and could send the user straight to the first connection or app instead of letting them choose. Polis now reads every connection before deciding, for SP-initiated logins, Identity Federation apps and IdP-initiated logins. An Identity Federation app that lists a tenant twice no longer offers that tenant's connections twice.
This is now available for the Ory Enterprise License and will be part of the next Ory Open Source release.
Ory Elements
Configure the length and characters of one-time codes
Ory Kratos Identities has two new settings for the one-time codes it sends for
login, registration, verification, and account recovery:
selfservice.methods.code.config.length takes a value from 6 to 20, and
selfservice.methods.code.config.alphabet takes digits or alphanumeric.
Alphanumeric codes use lowercase letters and digits without easily confused
characters, and users can enter them in any letter case. Codes stay six digits
unless you change these settings.
The code input node now carries maxlength, pattern, and a new inputmode
attribute that match the configured format. Render inputmode in custom UIs so
mobile devices show a keyboard with letters for alphanumeric codes. Ory Elements
reads it and shows a single text field for codes longer than eight characters.
See
One-time code format.
This is now available for the Ory Enterprise License and will be part of the next Ory Open Source release.
Ory Terraform
No significant changes in this release.