Visual RFC.
ALL RFCs / RFC 9700
Read the RFC ↗
RFC 9700 / ATTACKS & DEFENSES

Misuse of stolen tokens

18

Combine proof of possession with audience checks so a stolen token cannot travel freely between callers and APIs.

Related RFCs and changes

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

RFC 9700 · § 4.10DEFENSE
3 / 3
Misuse of stolen tokensCombine proof of possession with audience checks so a stolen token cannot travel freely between callers and APIs. Current state: Reject a token intended for another API..Misuse of stolen tokensaccess tokenbound key: Kscope: calendar:readCalendar APIno proofmissing bound keyOther APIaud mismatchwrong recipient
03
Reject a token intended for another API.

Server-side audience enforcement complements the sender constraint.

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

Constrain both the sender and the destination.

  • mTLS or DPoP can bind token acceptance to a sender’s key; audience restrictions limit where a token works.
  • To prevent resource-server phishing, bind the audience to the actual destination URL or another suitable concrete binding.
  • § 4.10.3 discourages relying only on client-enforced destination allowlists advertised in metadata.
DETAILS

If the attacker controls the client’s proof key too, sender constraints may fail. Audience checks cannot protect resources on a fully compromised server. Defenses reduce particular capabilities, not every breach.

Read the RFC section ↗

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

Privacy
All chapters in this RFC
  1. OAuth overview
  2. Authorization code + PKCE
  3. Retire unsafe grants
  4. Prevent token replay
  5. Limit token privileges
  6. Authenticate the client
  7. Metadata, TLS & CORS
  8. The attacker model
  9. Redirect URI validation
  10. Referer header leakage
  11. Browser history leakage
  12. Authorization server mix-up
  13. Authorization code injection
  14. Access token injection
  15. Cross-site request forgery
  16. PKCE downgrade
  17. Leakage at resource servers
  18. Misuse of stolen tokens
  19. Open redirection
  20. 307 credential forwarding
  21. TLS termination & proxies
  22. Refresh token protection
  23. Client as resource owner
  24. Clickjacking
  25. In-browser messaging
RFC 9700 / CHAPTERS

Chapters

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

RFC status and corrections ↗