Skip to content

Add PKCE documentation - #256

Merged
Kamefrede merged 1 commit into
support/update-authentication-documentationfrom
feature/add-pkce-documentation
Sep 3, 2026
Merged

Add PKCE documentation#256
Kamefrede merged 1 commit into
support/update-authentication-documentationfrom
feature/add-pkce-documentation

Conversation

@ricardobcl

Copy link
Copy Markdown
Contributor

Description

Documents the Native Application Flow (PKCE) being added to the authorization server by uphold/backend#19003, for native clients (desktop, CLI, mobile) that receive the OAuth redirect on a loopback address — including the MCP client use case.

  • New _authentication.md section: proof key generation (code_verifier/code_challenge, S256 only), the GET /oauth2/authorize/start endpoint with its parameters and challenge semantics (30-minute validity, bound to client_id + state, fresh state per attempt), the code_verifier token-exchange parameter with its failure mode (mismatch consumes the code), and loopback redirect URL matching (port-agnostic per RFC 8252 §7.3).
  • _applications.md: loopback http redirect URLs are now registrable for native applications, with a pointer to the PKCE requirement they trigger.
  • _ratelimits.md: GET /oauth2/authorize/start — 30 requests / 5-min window per IP.
  • Intro updated to present the three authorization flows.

Stacked on #250 (the auth-section refresh), since both edit the same sections — this PR targets that branch and will retarget to master automatically when it merges.

Blocked — do not merge until uphold/backend#19003 is merged and deployed

Two open review items on the backend PR may require small wording updates here before merging:

  • Whether /oauth2/authorize/start will reject clients that are not PKCE-required (review suggestion) — affects the "other applications may opt in" phrasing.
  • Whether client authentication (client_secret) at the token endpoint will be relaxed for public clients — the Step 3 example currently shows -u <clientId>:<clientSecret>, matching today's behavior.

Related issues

Impacted areas

Authentication, Applications and Rate Limits pages of the API reference.

Steps to reproduce or test

Development

Content derived from the backend PR's implementation and description (endpoint parameters, validation rules, TTLs and rate limit verified against its diff and config).

QA

Once the backend change is deployed to sandbox, run the documented flow end to end: generate a proof key, authorize via /oauth2/authorize/start, and exchange the code with code_verifier.

Checklist

  • Add label Breaking Change if it applies.
  • Commits are atomic and logically separated.
  • Performance implications have been considered.
  • Security implications have been considered.
  • The new and updated code has good coverage.
  • API documentation, if required, has been created or updated.
  • New dependencies have been added to package.json.
  • The README file, if required, has been updated.
  • Architectural diagram, if required, has been updated.

Deploy notes

Merge only after uphold/backend#19003 is deployed to production, and after #250 merges (this PR is stacked on it). No files removed, so no slate index changes are needed.

🤖 Generated with Claude Code

@ricardobcl ricardobcl added blocked Do not merge! feature labels Aug 23, 2026
@ricardobcl ricardobcl self-assigned this Aug 23, 2026
@ricardobcl
ricardobcl force-pushed the feature/add-pkce-documentation branch from e0c4a61 to ca60e2e Compare August 26, 2026 17:22
Documents the Native Application Flow introduced by uphold/backend#19003:
proof key generation, the GET /oauth2/authorize/start endpoint, the
code_verifier token exchange parameter, loopback redirect URL matching
semantics, and the associated rate limit. Blocked until the backend
change is merged and deployed.
@ricardobcl
ricardobcl force-pushed the feature/add-pkce-documentation branch from ca60e2e to c670898 Compare August 31, 2026 14:17
@ricardobcl
ricardobcl marked this pull request as ready for review September 1, 2026 12:44
@ricardobcl

Copy link
Copy Markdown
Contributor Author

uphold/backend#19003 has merged (squash fb25dd2d70), so this is now open for review. Keeping the blocked label until that change is deployed to production, since these pages go live on merge and describe the new GET /oauth2/authorize/start endpoint. One follow-up already queued: uphold/backend#19084 forwards intention on the start route — once it lands, intention should be added to the start endpoint's parameter table here.

@Kamefrede Kamefrede left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Kamefrede
Kamefrede merged commit 4262c6f into support/update-authentication-documentation Sep 3, 2026
6 checks passed
@Kamefrede
Kamefrede deleted the feature/add-pkce-documentation branch September 3, 2026 10:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked Do not merge! feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants