Repository navigation
v1.2.2
Patch Changes
-
#398
f5cc398Thanks @mattzcarey! - Client ID Metadata Document clients can authenticate withprivate_key_jwt(RFC 7523). A document that offers onlyprivate_key_jwt, which was refused before, now works. The client publishes its keys injwksor anhttps:jwks_uri, and signs each token and revocation request with anRS256orES256client assertion. The assertion is checked foriss,sub,aud,exp(at most an hour away) and a single-usejti. A document that offers bothnoneandprivate_key_jwt, as ChatGPT's does, keeps working withnoneand may use either method. With CIMD enabled, the authorization server metadata advertisesprivate_key_jwtandtoken_endpoint_auth_signing_alg_values_supported. -
#402
ec5ece9Thanks @mattzcarey! - An ID-JAG whosealgis not in the trusted issuer'salgorithmsnow fails withinvalid_alginstead ofissuer_not_trusted, soonErrorshows the real cause.algorithmsdefaults to['RS256'], so a resolver for an IdP that signs withES256and leavesalgorithmsunset rejected every assertion asissuer_not_trustedeven though the issuer was trusted. The client still gets the sameinvalid_grant"Invalid assertion". -
#405
612c2f9Thanks @mattzcarey! - An emptyclient_id,client_secret,client_assertionorclient_assertion_typeat the token endpoint is treated as omitted, as RFC 6749 §3.2 requires. A public client that sendsclient_secret=with no value now authenticates asnoneinstead of failing withinvalid_client, and an empty form parameter next to a Basic header no longer counts as a second authentication method. A non-empty secret or Basic credential on anoneclient is still refused. -
#395
16572acThanks @mattzcarey! - The enterprise-managed authorization JWKS fetch and the Client ID Metadata Document fetch sendUser-Agent: workers-oauth-provider/<version> (+https://github.com/cloudflare/workers-oauth-provider). Workers'fetchsends noUser-Agent, and WAF rule sets such as AWS WAF's core rule set (NoUserAgent_HEADER) block requests without one, so an IdP behind CloudFront answered the JWKS fetch with403and every ID-JAG exchange from it failed withjwks_fetch_failed.