docs(rp): document step-up authentication for relying parties - #803
Draft
StaberindeZA wants to merge 1 commit into
Draft
docs(rp): document step-up authentication for relying parties#803StaberindeZA wants to merge 1 commit into
StaberindeZA wants to merge 1 commit into
Conversation
Adds RP-facing documentation for the step-up authentication work in FXA-12763 (acr_values, max_age, and the acr/auth_time/amr claims). - New how-to covering the authorization parameters, choosing a max_age, reading the claims, the prompt=none failure mode, and the resource-server WWW-Authenticate challenge RPs must implement themselves (RFC 9470 section 3) - query-parameters: acr_values and max_age entries - using-apis: distinguish an insufficient_user_authentication 401 from an expired-token 401, since refreshing is the wrong response to the former - using-apis: call out the auth_time/auth_at semantics change from FXA-14308, which affects every RP rather than only step-up integrators - glossary: AAL, ACR, AMR, step-up authentication - tokens: acr/auth_time on JWT access tokens, and the ID token claims - integrating-with-fxa: parameters in the authorization table Also corrects the relying-party notices list to mozilla-accounts-notices; two reference pages named firefox-accounts-notices and linked to a matching URL. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
RP-facing documentation for the step-up authentication work in FXA-12763 —
acr_values,max_age, and theacr/auth_time/amrclaims. None of this was documented anywhere: a grep ofdocs/before this PR found zero occurrences ofacr_values,AAL2,max_age,auth_time, or "step-up". AMO cannot integrate from what exists today.New page —
relying-parties/how-tos/step-up-authentication.md:prompt=login(which prompts for a password; step-up deliberately does not)AAL2is the only recognisedacr_valuestoken and others are silently ignoredmax_age— the most consequential integration decision, including the five-second leeway and the fact that freshness is a property of the shared browser session, so another RP's challenge can satisfy yoursauth_timethemselvesactive: trueprompt=nonefailing withunmet_authentication_requirementsWWW-Authenticatechallenge (RFC 9470 §3), which is the RP's half to implement and was previously unowned by any ticketExisting pages:
query-parameters—acr_valuesandmax_ageentriesusing-apis— a new section distinguishing aninsufficient_user_authentication401 from an expired-token 401. The existing advice ("on a 401, refresh") is actively wrong for the former, because elevation is deliberately not carried by refresh tokens, so the retry loops.using-apis— a callout for theauth_time/auth_atsemantics change from FXA-14308, which affects every RP, not only step-up integratorsglossary— AAL, ACR, AMR, step-up authenticationtokens—acr/auth_timeon JWT access tokens, and the ID token claimsintegrating-with-fxa— parameters in the Step 2 authorization tableDrive-by: corrects the notices list to
mozilla-accounts-notices.integration-requirementsandusing-apisboth namedfirefox-accounts-noticesand linked to a matching URL;integrating-with-fxaalso had an undefined link reference.Testing
yarn buildpasses with no errors. The only anchor warning on the new page is/api#tag/..., the pre-existing class that affects every page linking into the redocusaurus route (tokens,using-apis,apple-iap,google-iap,integration-requirements).Every normative claim was verified against
mozilla/fxa@mainrather than the ticket text, which had drifted —MAX_AGE_LEEWAY_SECONDS = 5,lastAuthAt() = max(authAt, verifiedAt), the claim distribution across ID token / JWT access token / introspection, the emptyjwtAccessTokens.enabledClientIdsdefault, the passkey-to-TOTP divert, and the discovery document omittingacr_values_supported.packages/functional-tests/tests/oauth/stepUpAuth.spec.tswas used as the executable spec.Issue(s)
Closes FXA-12864.
Notes for reviewers
mozilla/fxa;api-swagger.jsonhere is a build artifact pulled daily from production bypull-api-definitions.yml, so it is deliberately untouched.prompt=nonesection documents behaviour from fix(oauth): fail prompt=none step-up instead of challenging fxa#21103, which is still in review. It carries a note saying so. This PR should land after that one, or that note needs to stay until it does.🤖 Generated with Claude Code