- experimental support for OIDC RP Metadata Choices (f3550da)
- only include DPoP-Nonce in Access-Control-Expose-Headers when DPoP is enabled (e769aa8)
- avoid assignment operators in conditional expressions (b7ed877)
- improve static find performance (106f94a)
- update some default helpers for readability (0818c36)
- more clarity for features.dPoP.allowReplay (779a141)
- mark experimental features more distinctly (986adc5)
- update references and styling of spec links (a4787b8)
- DCR endpoints only include www-authenticate for non-registration related errors (9a864d6)
- client schema defaults and static props (843943d)
- handle frame-ancestors in wmrm without a regexp (4f85585)
- push multiple elements to the recognized array in client_schema (d478a8b)
- simpler DCR validate registration access token (5f01eda)
- authorization and logout endpoints no longer support the HTTP POST method by default, this can be re-enabled using the
enableHttpPostMethods boolean configuration, this also requires that cookies.long.sameSite is set to none
- cookie session sameSite attribute default is now “lax” instead of “none”
- userinfo requests with bearer tokens will now fail if they also include DPoP
- userinfo now includes both dpop and bearer challenges when dpop is enabled
- accessing protected resources without an access token will now yield a 401 HTTP Status Code instead of a 400
- default PKCE configuration no longer requires PKCE to be used unless RFC9700 or a given profile says so
- removed the provider.Account getter
- all Provider routes will now end the HTTP request when finished, koa middlewares that are “downstream” will no longer be executed after a route is matched in oidc-provider, “upstream” control flows are unaffected
- the Provider no longer includes a catch-all 404 Not Found error handler
- FAPI profile behaviours no longer force PKCE, these should be forced by configuring the pkce.required configuration helper the default of which already does so.
- the server’s JWK Key IDs (JWK kid parameter) now must be unique, no two keys must use the same kid.
- the revokeGrantPolicy configuration helper is now also invoked during opaque Access Token revocation, its default return remains false for this case though
- CIBA ping and poll delivery mode ID Tokens no longer include at_hash, urn:openid:params:jwt:claim:rt_hash, and urn:openid:params:jwt:claim:auth_req_id
- authorization code grant type issued ID Tokens no longer include at_hash
- device authorization grant type issued ID Tokens no longer include at_hash
- refresh token grant type issued ID Tokens no longer include at_hash
- implicit grant type issued ID Tokens no longer include s_hash unless the request is a FAPI 1.0 Final request
- global fetch() API is now used to make outgoing HTTP requests instead of the “got” module.
- the httpOptions configuration option was removed and a new option to accomodate the use of fetch() interface was added. This options is aptly called “fetch” and its call signature and expected returns mirror the fetch() API.
- Enabling JAR (Request Objects by Value) is now enabled via features.requestObjects.enabled boolean instead of features.requestObjects.request boolean
- removed support for Passing a Request Object by Reference (JAR request_uri)
- removed legacy sameSite cookie fallback
- removed support for Node.js 18.x
- removed support for Node.js 20.x
- removed the pkce.methods configuration
- removed the features.requestObjects.mode configuration
- removed support for Ed448
- removed support for X448
- removed support for secp256k1 / ES256K
- removed support for FAPI 1.0 ID2
- Access Token revocation may now also optionally revoke the underlying grant (4f69668)
- add support for the fully-specified Ed25519 JWS Algorithm Identifier (645b900)
- DPoP support is now enabled by default (a5694af)
- Experimental support for external signing keys, e.g. in a KMS or HSM (8b3ceff)
- expose current requests’ ctx via Provider.ctx static getter (1fbd81b)
- update FAPI 2.0 implementation to FAPI 2.0 Final (eff3115)
- auto-format code blocks (c2c520f)
- dpop cannot acked anymore, it is stable (a48c51f)
- improvements to linked resources (cf77770)
- mention external types (5f8a450)
- move adapters to the Community Guides Discussions section (ba806ca)
- move recipes to the Community Guides Discussions section (cd8da28)
- remove mentions of the connect server framework (7cb1aaa)
- update README to use named exports (8355886)
- update version support matrix (abbfe2f)
- no access token provided error is now a 401 (8493e2d)
- userinfo now includes both dpop and bearer challenges when dpop is enabled (1093f6b)
- change default PKCE usage requirement (fdf8ad8)
- change default session cookie from sameSite none to lax (b47eee8)
- cleanup unused azp claim code (6c57e63)
- deprecate the
.app getter (9b61212)
- disable HTTP POST Method handling of authorization and logout endpoints (d56304c)
- encryption and key derivation is not blocking the main thread (73a422f)
- ensure all route handlers are final (8cc44e6)
- escape www-authenticate backslashes despite not directly using them (e789b98)
- increase all random identifiers from ~126 bits of randomness to ~256 (45721f8)
- minimal change to support koa@3 (925cee5)
- no more warnings if cookie keys are missing (7ab6157)
- omit generic “typ: JWT” in issued JSON Web Tokens (4eb4004)
- pass over internal configuration getters (0243964)
- Provider is now the Koa application instance (167216e)
- remove hardcoded require PKCE checks (be0b2fd)
- remove object-hash dependency (fda9385)
- remove optional ID Token _hash claims (58ca2c2)
- remove the provider.Account getter (dd2bde4)
- remove unused code (e5fc3cb)
- remove uses of randomFill and Buffer.allocUnsafe (00fe106)
- removed legacy sameSite cookie fallback (2defa70)
- removed support for FAPI 1.0 ID2 (311e3e2)
- removed support for Passing a Request Object by Reference (JAR request_uri) (bacf375)
- removed the features.requestObjects.mode configuration (4ec8327)
- removed the pkce.methods configuration (4a736b8)
- Request Object (JAR) is now enabled with features.requestObjects.enabled (20d60a4)
- simplify default assertJwtClaimsAndHeader configuration (1ea27a6)
- update Node.js support matrix (db57556)
- use fetch() api to make outgoing HTTP requests (cc70e5a)
- use hkdf in dpop’s rolling nonce calculation (7b77967)
- use more optional chaining (e5539ae)
- use oneshot hash methods instead of intermediate Hash objects (2dc4bd1)
- use structuredClone instead of JSON.stringify then parse (ad02170)
- use URL.parse (11e1b33)
- userinfo requests with bearer tokens will now fail if they also include DPoP (e5efa5c)
- mark RFC9701 (features.jwtIntrospection) as stable (e2a2de2)
- allow own KeyGrip instances in cookies.keys configuration (d5d2900)
- allow specifying the user-agent header for outgoing requests (#1287) (c77513c)
- add a helper for asserting JWT Client Auth claims and header (82d4e50)
- update verbiage “provider” > “authorization server” (3768192)
- move assertJwtClaimsAndHeader after regular JWT claims set validation (05f6bf4)
- normalize single string set-cookie headers (6effeed)
- remove use of node:url in favour of WHATWG URL (0dc59a1)
- build: export Provider also as a named export (083c7c4)
- add a Client static validate() method (d1f7d73)
- add a helper allowing custom claims parameter validations (ec2a1f5)
- add experimental support for RFC9396 - Rich Authorization Requests (e9fb573)
- add response_modes client metadata allow list (76f9af0)
- allow extraParams to define validations for extra parameters (b7d3322)
- DPoP: add a setting to disable DPoP Proof Replay Detection (2744fc8)
- DPoP: send a dpop-nonce when the proof’s iat check fails and nonces are configured but not required (1b073c0)
- FAPI: add FAPI 2.0 profile behaviours (5212609)
- JAR: add a helper allowing custom JWT claim and header validations (be9242a)
- PAR: add a setting to allow use of unregistered redirect_uri values (a7e73fa)
- update Web Message Response Mode and remove its Relay Mode (a91add8)
- DPoP,mTLS: reject client configuration in which binding is required but response types include an implicit token response (cd7e0f4)
- deprecate FAPI 1.0 ID2, lax request objects, plain PKCE (3e8a784)
- don’t use overwrite cookie option by default (dfbcb94)
- DPoP: move the accepted timespan into a constant (a8e8006)
- DPoP: omit sending the dpop-nonce header if the existing one used is fresh (4d635e2)
- ensure param-assigned max_age from client.defaultMaxAge is a string (0c52469)
- FAPI: deprecate FAPI profile hardcoded PKCE checks (56641ec)
- JAR: authorization requests with JAR now require a client_id parameter (9131cd5)
- JAR: Request Objects are no longer checked for one time use (18efa70)
- PAR: consume PAR after user interactions instead of before (53babe6)
- store claims value parsed in non-JAR PAR (9cd865b)
- use invalid_request instead of unauthorized_client (7947d87)
- include ID Token auth_time when client’s default_max_age is zero (bebda04)
- adds events and debugging recipe (#1246) (0bf7696)
- fix client_secret_basic special characters encoding example (73baae1)
- re-run update docs (99cc84a)
- avoid iteration resource iteration in client_credentials (e306640)
- avoid use of prototype attributes in object-hash (270af1d)
- use logical or assignment (8f55588)
- ensure each individual resource indicator is a valid URI (d9e1ad2)
- use doc argument in web_message js code (da3198b)
- add missing opening html tags (23997c5)
- DPoP: mark defaulted dpop_jkt parameter as trusted (ee633f3)
- test decoded basic auth tokens for their VSCHAR pattern (3f86cc0)
- DPoP,PAR,JAR: validate DPoP before invalidating JAR during PAR (ca0f999)
- DPoP: remove experimental flag, DPoP is now RFC9449 (89d133e)
- assign extraTokenClaims return to the model (e296dc7)
- DPoP: compare htu scheme and hostname case independent (b72d668)
- allow specifying the user-agent header for outgoing requests (95f24ef)
- ignore non-existent resource scopes during refresh (#1222) (bdf23ba)
- ignore post_logout_redirect_uris when logout is disabled (#1221) (d7dd6cf)
- add correlation identifier to interactions (#1218) (c072352)
- mTLS.getCertificate helper can return a X509Certificate object (be3f47f)
- Default clock skew tolerance is now set to 15 seconds (previously 0 seconds tolerance). This can be reverted using the
clockTolerance configuration option.
- The userinfo endpoint will no longer echo back
x-fapi-interaction-id headers. This can be reverted using a custom pre-middleware.
request_uri parameter is no longer supported at the Device Authorization Endpoint.
- The combination of FAPI and CIBA features no longer forces CIBA clients to use JAR. To continue conforming to a given FAPI CIBA profile that requires the use of JAR either set
features.requestObjects.requireSignedRequestObject to true as a global policy or set require_signed_request_object or backchannel_authentication_request_signing_alg client metadata.
- PAR no longer automatically enables the support for JAR. To support PAR with JAR configure both
features.pushedAuthorizationRequests and features.requestObjects.request.
- CIBA no longer automatically enables the support for JAR. To support CIBA with JAR configure both
features.ciba and features.requestObjects.request.
- Pushed Authorization Requests (PAR) are now enabled by default. This can be reverted using the
features.pushedAuthorizationRequests.enabled configuration option.
- Completely removed v6.x way of setting access token formats.
expiresWithSession() for access tokens issued by the authorization endpoint will now only be invoked for opaque format access tokens.
- Default allowed DPoP signing algorithms are now just ES256 and EdDSA. RSA algorithms not allowed by default. This can be reverted using the
enabledJWA.dPoPSigningAlgValues configuration option.
- Omitting a redirect_uri parameter when a single one is registered is now enabled by default (again). This can be reverted using the
allowOmittingSingleRegisteredRedirectUri configuration option.
features.fapi.profile is now a required configuration option when features.fapi.enabled is true.
id_token_signed_response_alg now must be set when id_token_encrypted_response_alg is also set on a client.
userinfo_signed_response_alg now must be set when userinfo_encrypted_response_alg is also set on a client.
introspection_signed_response_alg now must be set when introspection_encrypted_response_alg is also set on a client.
authorization_signed_response_alg now must be set when authorization_encrypted_response_alg is also set on a client.
- The RSA1_5 JWE Key Management Algorithm, which was previously disabled by default, is now completely removed.
request_uri parameter support is now disabled by default. This can be reverted using the features.requestObjects.requestUri configuration option.
httpOptions return property lookup was renamed to dnsLookup.
httpOptions return property timeout was removed, return an AbortSignal instance as signal property instead.
oidc-provider is now an ESM-only module, it must now be imported using the import declaration or the import() syntax, the Provider constructor is the module’s default export, the errors and interactionPolicy exports are the package’s named exports. There is no Provider named export.
httpOptions no longer defaults to using the npm module cacheable-lookup as its dnsLookup option. It defaults to node:dns module’s lookup export instead.
- PASETO Access Token format support was removed.
- Removed support for Node.js 12.
- Removed support for Node.js 14.
- Removed support for Node.js 16.
- Node.js LTS 18 (^18.12.0) is now required.
- Default Authorization Code duration is now 60 seconds instead of 10 minutes. This can be reverted using the
ttl.AuthorizationCode configuration option.
- Request Object use now defaults to its stricter definition from RFC 9101 rather than OIDC Core 1.0. This can be reverted using the
features.requestObjects.mode configuration option.
- The “none” JWS algorithm, which was previously disabled by default, is now completely removed.
- The PBKDF2 based JWE Key Management Algorithms, which were previously disabled by default, are now completely removed.
- The client registration management update action now rotates registration access tokens by default. This can be reverted using the
features.registrationManagement.rotateRegistrationAccessToken configuration option.
- It is no longer possible to pass Bearer tokens using the
access_token query string parameter. This can be reverted using the acceptQueryParamAccessTokens configuration option.
- The
tokenEndpointAuthMethods configuration method was renamed to clientAuthMethods.
- The
enabledJWA.tokenEndpointAuthSigningAlgValues configuration method was renamed to enabledJWA.clientAuthSigningAlgValues.
- The non-standard
introspection_endpoint_auth_method, and introspection_endpoint_auth_signing_alg client metadata properties were removed. The client’s token_endpoint_auth_method, and token_endpoint_auth_signing_alg properties are now used as the only indication of how a client must authenticate at the introspection endpoint. The accompanying JWA and authentication methods configuration properties were also removed.
- The non-standard
revocation_endpoint_auth_method, and revocation_endpoint_auth_signing_alg client metadata properties were removed. The client’s token_endpoint_auth_method, and token_endpoint_auth_signing_alg properties are now used as the only indication of how a client must authenticate at the revocation endpoint. The accompanying JWA and authentication methods configuration properties were also removed.
- add UnmetAuthenticationRequirements error (3f6684a)
- bump DPoP to draft-11 (917507f)
- support DPoP nonces (8d82988)
- change default on allowOmittingSingleRegisteredRedirectUri (d41bb0f)
- check request_uri_not_supported early (57b39a2)
- CIBA and PAR do not automatically turn on JAR (089fa43)
- Completely removed v6.x way of setting access token formats. (a2cf235)
- default code ttl down from 10 minutes down to 1 minute (f770e2d)
- default dPoPSigningAlgValues changed (9859969)
- default JAR mode is now strict instead of lax (cef63b6)
- disable query string bearer by default (059557b)
- disable request_uri support by default (3575584)
- enable PAR by default (4272027)
- expiresWithSession on authorization endpoint access tokens (cb67083)
- oidc-provider is now an ESM-only module (3c5ebe1)
- PBKDF2 JWE encryption algorithms are no longer supported (868ab2f)
- redo fapi profile checks, remove x-fapi-headers nonsense (7cf031a)
- remove default from FAPI profile configuration (0f93b8c)
- remove introspection and revocation client metadata (a6433d0)
- removed default outgoing cacheable-lookup use (7c10920)
- removed optional “none” JWS algorithm support (e654fe6)
- removed PASETO access token format support (079e2f2)
- removed support for issuing
"cty": "json" JWEs (b4b837b)
- renamed client auth related configuration (b8e8ce9)
- require Node.js LTS 18 (ff26cf6)
- rotated registration management access tokens by default (2eb5c63)
- RSA1_5 JWE encryption algorithm is no longer supported (a967a4e)
- set default clock skew tolerance to 15 seconds (42c00da)
- update http request options (2fd5eda)
← Newer entries | Older entries →