Overview

Chapter 15. Beyond bearer tokens

OAuth’s bearer tokens are intentionally simple and widely adopted, but their “whoever holds it can use it” model doesn’t fit every security scenario. This chapter explores emerging directions that raise assurance about who is using a token and whether a request has been tampered with. It focuses on two complementary efforts—Proof of Possession (PoP) tokens and TLS token binding—both aiming to reduce token replay risk and better tie tokens to legitimate clients or connections, while acknowledging that the specifications are still evolving.

PoP replaces the pure bearer model with a two-part construct: an access token plus a key bound to that token. The client proves possession of the key by signing parts of each HTTP request (for example, method, host, path, and a timestamp) and sending a compact signed object alongside the token, while the token itself remains opaque to the client. Keys may be symmetric or asymmetric; a common pattern is for the authorization server to generate an asymmetric pair, return the private/public components to the client, and retain only the public key. The protected resource retrieves the key associated with the token (for example, via local storage or token introspection), verifies the signature, and checks that the signed request details match the actual request. This approach prevents simple replay of intercepted tokens and limits the spread of private key material.

TLS token binding strengthens security at the transport layer by associating tokens with a client’s TLS-presented identifier and proof of private key possession. While straightforward in single-channel cases, OAuth deployments often span multiple TLS connections (browser to client and authorization server, client to token endpoint and resources, and resources to introspection), so clients may need to purposely bind tokens issued on one connection to identifiers used on another. Token binding requires access to the TLS stack and differs from mutual TLS authentication, but it can be layered with either bearer or PoP tokens to increase confidence that the token presenter is the original holder. Together, PoP and token binding illustrate a move beyond pure bearer semantics, trading modest complexity for stronger protection against token theft and misuse.

Two parts of the OAuth PoP token
Obtaining an OAuth PoP token (and associated key)
Using and verifying an OAuth PoP token
TLS token binding on a browser cookie
Different TLS channels in a typical OAuth ecosystem

FAQ

Why aren’t OAuth 2.0 bearer tokens sufficient for every scenario?Bearer tokens are simple and widely adopted, but any party that obtains a bearer token can use it until it expires. In scenarios where requests might be intercepted or replayed, you may want the client to prove possession of an additional secret so that a stolen token alone isn’t enough to access resources.
What is a Proof of Possession (PoP) token and how does it differ from a bearer token?A PoP token is coupled with a cryptographic key. The client must present the token and also prove it holds the associated key by signing aspects of the HTTP request. Unlike bearer tokens, a captured PoP token cannot be replayed without the corresponding key.
How is the PoP key established and associated with an access token?The authorization server must know the key to bind to the token. Options include: - Client provides a key (typically an asymmetric public key). - Server generates a key (symmetric or asymmetric) and returns it to the client. Keys are expressed as JSON Web Keys (JWKs), part of the JOSE family, enabling crypto agility and support for symmetric and asymmetric keys.
How does a client use a PoP token when calling a protected resource?The client creates a JSON payload that includes the access token and optionally selected parts of the HTTP request (for example, method, host, path) plus a timestamp. It signs this payload as a JWS with the PoP key and sends the result in the Authorization header using the PoP scheme. The access token remains opaque to the client and is carried inside the signed object.
How does a protected resource validate a PoP-based request?The resource parses the JWS, extracts the access token, and looks up token metadata (for example, via local storage, token introspection, or by parsing a structured token). It obtains the associated key (for example, from the authorization server through introspection) and verifies the JWS signature. It also checks any bound request elements (method, host, path, hashed headers/params) against the actual request.
What security benefits do PoP tokens provide over bearer tokens?PoP tokens mitigate replay: an attacker who steals a token cannot use it without the matching key. They also enable minimization of private key exposure—when clients generate their own key pairs, the authorization server and protected resources can operate with only the public component.
What is TLS token binding and how does it work?TLS token binding ties tokens to the TLS connection by having the client present a token-binding identifier (a public key) and prove possession of the corresponding private key at the TLS layer. Servers bind issued tokens to that identifier and later verify it on subsequent connections, ensuring the same client is using the token. It leverages TLS-layer information to strengthen application-layer security.
How does TLS token binding interact with typical OAuth deployments that use multiple TLS channels?OAuth commonly spans several distinct TLS connections (browser↔authorization server, browser↔client, client↔token endpoint, client↔resource, resource↔introspection). Each can have a different token-binding identifier. To bridge this, the client can explicitly send the identifier from one connection for use on another (for example, bind a token issued over the token endpoint connection to the identifier used for calls to the protected resource). This requires the client to manage these mappings.
Can PoP tokens and TLS token binding be used together?Yes. TLS token binding can add another assurance layer on top of PoP or bearer tokens. With PoP, the client proves possession at the application layer (JWS signature), and token binding adds a TLS-layer proof, further reducing token misuse risk.
What is the standardization status and what should implementers watch out for?At the time described, PoP and TLS token binding were works in progress, with details subject to change. Implementers should treat drafts as guidance, expect evolution, rely on JOSE/JWK for crypto agility, and encapsulate assumptions so they can adapt as specifications stabilize.

pro $24.99 per month

  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose one free eBook per month to keep
  • exclusive 50% discount on all purchases
  • renews monthly, pause or cancel renewal anytime

lite $19.99 per month

  • access to all Manning books, including MEAPs!

team

5, 10 or 20 seats+ for your team - learn more


choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • renews monthly, pause or cancel renewal anytime
  • renews annually, pause or cancel renewal anytime
  • OAuth 2 in Action ebook for free
choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • renews monthly, pause or cancel renewal anytime
  • renews annually, pause or cancel renewal anytime
  • OAuth 2 in Action ebook for free
choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • renews monthly, pause or cancel renewal anytime
  • renews annually, pause or cancel renewal anytime
  • OAuth 2 in Action ebook for free