docs(mfa): the MFA session is not browser-only - #93
Merged
Conversation
The page said 'the frontend authenticates the follow-up call ... via a short-lived MFA session cookie'. Read as browser-only, which is how two SDKs independently concluded they had to emulate a user agent — one of them shipping a cookie-injection hole on the way. It is an ordinary Set-Cookie header carrying an opaque handle, and the server accepts it back in an ordinary Cookie header. Any HTTP client can complete the flow by reading one value and sending it back; gRPC carries the same handle as metadata. Adds the two-command curl recipe, the gRPC equivalent, and the one invariant a cookie jar would have provided for free: attach it only to your configured Authorizer base URL and never across a redirect, because skip_mfa_setup exchanges the handle for a full access token. Also states why a general-purpose jar is the wrong tool here — Secure on http://localhost and per-language domain-matching rules are exactly the bugs both SDKs hit.
✅ Deploy Preview for authorizerdev-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
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.
The MFA page said "the frontend authenticates the follow-up call … via a short-lived MFA session cookie". Read as browser-only — which is exactly how two SDKs independently concluded they had to emulate a user agent, one of them shipping a cookie-injection hole on the way.
It is an ordinary
Set-Cookieheader carrying an opaque handle, and the server accepts it back in an ordinaryCookieheader. Any HTTP client can complete the flow. Verified end to end against a running server:What's added
set-cookiemetadata in,cookiemetadata out).skip_mfa_setupexchanges the handle for a full access token, so it is a credential — memory only, never logged, never persisted.Securecookies dropped overhttp://localhost, and domain-matching rules that vary by language. Those are precisely the bugs both SDKs hit.Cross-linked from
skip_mfa_setupin the GraphQL API reference, since that is where someone lands when the token comes back null.Companion to authorizerdev/authorizer-py#15, which replaces the Python SDK's cookie jar with this pattern.
npm run build— exit 0, no broken links or anchors.