Repository navigation
v0.58.0
Immutable
release. Only release title and notes can be modified.
0.58.0 (2026-10-20)
⚠ BREAKING CHANGES
- fapihttp: a fapihttp.NewClient client no longer connects to a server that offers, under TLS 1.2, only cipher suites other than the four ECDHE AES-GCM ones.
- client.NewTokenSetSealer, client.NewBackchannelSessionSealer, client/sessioncookie and server/interactioncookie refuse a key made entirely of printable text. Generate keys with crypto/rand and decode an encoded key before passing it.
- server: with Config.Federation.EntityID set, server.New refuses a Dependencies.Keys whose federation entity signing key is also one of the server's protocol signing keys. Give keys.FederationEntitySigning its own key.
- client: client.New refuses Limits.RequestObjectLifetime over 60 minutes for a client that signs request objects.
- client: under AssuranceProduction, client.New refuses Config.AuthorizationResponseIssPolicy TolerateAbsentAuthorizationResponseIss. Set RequireAuthorizationResponseIss.
- client: under AssuranceProduction, client.New refuses Config.CallbackBinding CallbackBindingDeviceLocalStore when Dependencies.Sessions declares CrossInstanceConsistent. A web client uses CallbackBindingSessionHandle.
- client: a Scope element holding more than one scope, such as "openid profile", is now refused with invalid_request. Pass each scope as its own element.
- resource: under AssuranceProduction, resource.NewVerifier refuses an OpaqueAccessTokens with no Audience. Set it to this resource server's identifier, or to the authorization server's issuer when clients name no resource indicator.
- server: under NoClientCertificateChainTrust, automatic registration no longer registers tls_client_auth or its SAN variants unless AutomaticRegistration.AllowedClientAuthMethods names them, so an RP offering only those methods is no longer registered. A deployment whose TLS termination verifies client certificate chains lists the methods it accepts there.
Features
- client: add Config.RequireSignedUserInfo (4caef6f)
- client: follow the authorization server's attestation challenges (091fc13)
- server: accept draft-12 client attestations and enforce its client_id, freshness and binding rules (c7e764f)
- server: add Config.MutualTLSAtEndpoints, and don't advertise tls_client_auth under NoPKIClientAuthentication (14d432f)
Bug Fixes
- client: cap a CIBA interval instead of letting it overflow (386434a)
- client: keep the authorization endpoint's own query in the authorization URL (7ca5773)
- client: record the requested scope when a token response omits it (984009f)
- client: refuse a request object lifetime over 60 minutes (075f3eb)
- client: refuse a Scope element that isn't one scope-token (fab4b93)
- client: refuse an authorization extension named for a reserved parameter (65e2ac7)
- client: refuse another issuer's token set at UserInfo and protected resources (0ec01d9)
- client: refuse CallbackBindingDeviceLocalStore over a shared sessions store in production (658e04f)
- client: refuse TolerateAbsentAuthorizationResponseIss under production assurance (7aec52f)
- client: reuse a server's DPoP nonce by default (d05045d)
- client: use the userinfo mTLS alias, and apply aliases in NewFromDiscovery (a9a8dc5)
- conformance: write resource errors with the resource package's own challenge (52bd48c)
- fapihttp: offer only the ECDHE AES-GCM cipher suites under TLS 1.2 (8660a92)
- federation: don't let null or empty RP metadata meet an essential policy (cf067f6)
- federation: don't let the first caller's cancellation fail a shared automatic registration (557ed49)
- federation: refuse a parsed statement carrying a claim its kind may not (aae9a6a)
- federation: refuse a resolve request naming a Trust Anchor the Resolver doesn't trust (f19be8f)
- federation: refuse a trust mark whose delegation has no owner to validate it against (91e89fb)
- federation: refuse to publish private key material in a statement's jwks (4d36510)
- normalise a DPoP proof's htu path before comparing it (c202414)
- refuse a sealing key made entirely of printable text (39fc891)
- refuse JWTs dated in the future and allow clock skew on their lifetime (63df91e)
- resource: accept more than one space after the Authorization scheme (b6e038c)
- resource: require OpaqueAccessTokens.Audience under production assurance (ee72139)
- resource: send the next DPoP nonce with an insufficient_scope error (913a647)
- server: accept a CIBA request's DPoP proof naming the endpoint's mTLS alias (e29ba9b)
- server: accept a request object typed "JWT" (1a4262b)
- server: add NoPKIClientAuthentication and use it where no client uses tls_client_auth (7a4b7fd)
- server: answer malformed or unsupported authorization_details with invalid_authorization_details (30f8a45)
- server: answer revocation of an opaque access token with unsupported_token_type (8f4fda2)
- server: bound and linearise the authorization request's prompt (4cdd0a3)
- server: don't panic in CIBA calls when CIBA isn't configured (f280c13)
- server: ignore claims a client assertion carries beyond the ones it reads (4abe326)
- server: ignore client_notification_token from a poll-mode CIBA client (6e91878)
- server: mark PAR, CIBA and error responses uncacheable, and omit an empty scope (ec5f073)
- server: match a form request's media type case-insensitively and whole (716327a)
- server: record the issuer in stored requests and grants, and refuse another issuer's (202d008)
- server: refuse a federation entity key that is also a protocol key (114fb8a)
- server: refuse a response_mode the server won't answer in (01781de)
- server: refuse a response_type other than code as unsupported_response_type (ab86aec)
- server: register tls_client_auth automatically only when its chain is verified (4a91d2a)
- server: require client_id in an automatically registered client's request object (76c61e4)
- serverresource: never ask the claims source about an empty subject at UserInfo (ed50c72)
- server: send a fresh DPoP nonce with a token error once the request's nonce is spent (2839202)
- server: treat a form parameter sent without a value as omitted (a8d115e)