docs(auth): scope=commerce selects the commerce consent; the authorization response carries RFC 9207 iss - #404
Conversation
|
No description provided. |
aaitor
left a comment
There was a problem hiding this comment.
Reviewed the current head. One documentation consistency issue is inline.
…ization response carries RFC 9207 `iss` Companion to nevermined-io/nvm-monorepo#3532 (nvm-monorepo#3527, epic #3458). - overview: the RFC 8414 example gains `authorization_response_iss_parameter_supported: true` and a section on validating `iss` (equal to the tier's `issuer`; success and denial; the device flow has no authorization response). - oauth-authorization-code: a prerequisite on which consent is being asked for — `agent_id` vs account-level, `consent_type=commerce` for a hand-configured provider, `scope=commerce` for a discovery-driven client, explicit wins, a contradiction is refused; `iss` on the hand-off; the flag in the discovery note. - for-agents: the two extra facts the document tells an agent (`iss`, and `scope=commerce` as the one scope the consent screen honours despite no `scopes_supported`). - integrations/mcp: a note on consent selection through `scope` and on `iss`. - api-reference/oauth-openapi.json (hand-maintained): the flag in the description + example, edited as text. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
022c580 to
e8b8270
Compare
|
No description provided. |
…nly when scope does not contradict it Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
aaitor
left a comment
There was a problem hiding this comment.
Re-review at 26240577. My 09-15 should-fix (oauth-authorization-code.mdx:24, "always wins") is folded — the new wording ("kept as long as scope does not contradict it; a contradiction … is refused") matches selectConsentType exactly, so that thread can be resolved.
I re-checked the behavioural claims against nvm-monorepo main: selectConsentType (oauth-scope.ts: contradiction and agent_id both throw, extra scope tokens ignored), iss on the success redirect, on denial (access_denied) and on the authorize error card (buildOAuthCallbackUrl / buildOAuthErrorUrl), issuer = origin of the tier's backendUrl, authorization_response_iss_parameter_supported in the RFC 8414 document, no iss on the device flow, and the #prerequisites anchor. Both OpenAPI JSON files parse. Nothing blocks; one nit inline.
aaitor
left a comment
There was a problem hiding this comment.
🟡 Approved with comments — no blockers; 0 should-fix, 1 nit(s) left inline.
Inline review: #404 (review)
…-authorization-code.mdx (docs#404 nit) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Companion to nevermined-io/nvm-monorepo#3532 (implements nevermined-io/nvm-monorepo#3527, part of epic nevermined-io/nvm-monorepo#3458 — ADR 0077). Documents two AS-side behaviours that PR ships; merge after it deploys so the docs never lead the API.
What changed
integrate/authentication/overview.mdx— the RFC 8414 example gainsauthorization_response_iss_parameter_supported: true, and a new section The authorization response names its issuer (RFC 9207):isson the?code=success and the?error=denial alike, equal to the tier'sissuer, compare by plain string equality and reject a mismatch; the device flow has no authorization response.integrate/authentication/oauth-authorization-code.mdx— a prerequisite on which consent you are asking for:agent_id→ agent-specific; otherwise account-level,consent_type=commercefor a hand-configured provider (LangSmith Fleet keeps its?consent_type=commerce),scope=commercefor a discovery-driven client that never sawconsent_type; an explicitconsent_typewins;consent_type=account_access&scope=commerceorscope=commerce+agent_idis refused, never guessed;scopeis not advertised (noscopes_supported, unchanged) and never reaches the API.isson the hand-off, and the flag in the discovery note.integrate/authentication/for-agents.mdx— the two extra facts the document tells an agent (iss;scope=commerceas the one scope the consent screen honours).integrations/mcp.mdx— a note on consent selection throughscope(MCP clients forward thescopefrom the server'sWWW-Authenticatechallenge) and oniss, including why ChatGPT cares (stable CIMD client identity).api-reference/oauth-openapi.json(hand-maintained, per the docs CLAUDE.md exception) — the flag in the description and the example, edited as text.Deliberately not touched:
products/catalog/mcp.mdx's "OAuth-connector variant … tracked elsewhere" — that is the Commerce MCP's own challenge/PRM (nvm-monorepo#3459) and the verification matrix (#3460), documented when those land.api-reference/**SDK-sourced trees untouched.Verification
mintlify broken-links→success no broken links found(run from a worktree offorigin/main; no bare<placeholder>in the diff, so the check did run).🤖 Generated with Claude Code
2026-09-21 — out of draft. Production is enabled and in effect (argocd#646 merged + synced;
connect/details→["commerce"]on both prod tiers), so the gate these drafts waited on is met. Stacked PR: base = main; #409 → #411 → #414 follow. Rebased onto the current pages (main restructuredfor-agents.mdx/overview.mdxand grewmcp.mdxmeanwhile);mintlify broken-linksgreen. Merge in order — GitHub retargets each base tomainas the previous one lands.