Visual RFC.
ALL RFCs / RFC 8252
Read the RFC ↗
RFC 8252 / NATIVE-APP AUTHORIZATION

Private-use callback schemes

03

A domain-based custom URI scheme lets the operating system return a code to an installed app.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

DIAGRAM§ 7.1 ↗
RFC 8252 · § 7.1EXAMPLE
3 / 3
Private-use callback schemesA domain-based custom URI scheme lets the operating system return a code to an installed app. Current state: Launch the app with the callback..Private-use callback schemescom.example.app:/callbackoperating-system URI dispatchAppregistered schemeOther appscheme collisionPKCE still required
03
Launch the app with the callback.

The native app validates its pending transaction and redeems the code.

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
KEY POINT

Use a collision-resistant scheme, then still use PKCE.

  • The app MUST base its scheme on a domain under its control, expressed in reverse order.
  • A callback such as com.example.app:/oauth2redirect uses a private-use scheme.
  • Multiple apps may register the same scheme; the scheme alone is not proof of the receiver’s identity.
DETAILS

The extra app interception risk is why choosing a scheme does not replace PKCE.

Read the RFC section ↗

Diagrams simplify the RFC. Read the linked sections for complete requirements.

Privacy
All chapters in this RFC
  1. Leave login to the browser
  2. A browser round trip, protected by PKCE
  3. Private-use callback schemes
  4. Claimed HTTPS callbacks
  5. Loopback callbacks on desktop
  6. Register the full callback
  7. Bind the response to the app’s request
  8. Fake browsers and client impersonation
  9. Server support and implicit-flow limits
RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗