Minor Changes
-
#158
b26f7ffThanks @mattzcarey! - AddclientIdMetadataDocumentEnabledoption to make CIMD (Client ID Metadata Document) support explicitly opt-in. Previously, CIMD auto-enabled when theglobal_fetch_strictly_publiccompatibility flag was present, which could cause crashes for servers where URL-shaped client_ids hit bot-protected endpoints. When not enabled (the default), URL-formatted client_ids now fall through to standard KV lookup instead of throwing. -
#144
49a1d24Thanks @mattzcarey! - AddrevokeExistingGrantsoption tocompleteAuthorization()that revokes existing grants for the same user+client after creating a new one. Defaults totrue, fixing infinite re-auth loops when props change between authorizations (issue #34). Set tofalseto allow multiple concurrent grants per user+client.Revoke tokens and grant when an authorization code is reused, per RFC 6749 §10.5. This prevents authorization code replay attacks by invalidating all tokens issued from the first exchange.
Breaking behavior change: Previously, re-authorizing the same user+client created an additional grant, leaving old tokens valid. Now, old grants are revoked by default. If your application relies on multiple concurrent grants per user+client, set
revokeExistingGrants: falseto preserve the old behavior.
Patch Changes
-
#164
4b640a3Thanks @pnguyen-atlassian! - Includeclient_secret_expires_atandclient_secret_issued_atin dynamic client registration responses when aclient_secretis issued, per RFC 7591 §3.2.1. -
#165
9cce070Thanks @mattzcarey! - UsePromise.allSettledinstead ofPromise.allfor best-effort grant revocation incompleteAuthorization(), ensuring all grants are attempted even if one fails.