Demonstrating Proof of Possession
DPoP is a security mechanism for OAuth 2.0 that ties a token to the specific client that requested it, so a stolen token cannot simply be reused by an attacker. It works by having the client prove, with each request, that it holds a private cryptographic key associated with the token. This makes tokens harder to misuse if they are intercepted or leaked.
DPoP, specified in RFC 9449, is an application-level mechanism for sender-constraining OAuth 2.0 (RFC 6749) access and refresh tokens. The client generates an asymmetric key pair and, on each protected request, sends a signed JWT proof (a DPoP proof) demonstrating possession of the corresponding private key; the token is bound to that key so that presentation of the token alone is insufficient without a matching proof. DPoP is an OAuth 2.0 authorization framework extension focused on token binding at the application layer; per the evidence, it addresses sender-constraining tokens and is distinct from authentication of the end user. Exact proof structure, key confirmation claims, and validation behavior depend on the RFC 9449 profile and the specific authorization server and resource server implementation.
Why it matters
Bearer tokens are the default in most OAuth 2.0 deployments, and their defining weakness is exactly that: whoever bears the token can use it. If an access or refresh token is intercepted in transit, leaked through logs, exfiltrated from a compromised client, or exposed by a mishandled redirect, an attacker can typically replay it against the resource server with no further proof required. DPoP addresses this specific class of risk by sender-constraining the token so that presentation of the token alone is insufficient without a matching cryptographic proof.
DPoP, specified in RFC 9449, matters because it raises the bar for token theft without requiring the heavier infrastructure of some alternative binding approaches. By binding an OAuth 2.0 access or refresh token to a key held by the requesting client, a stolen token becomes far less useful to an attacker who does not also hold the corresponding private key. This is particularly relevant for public clients and browser-based applications, where mutual-TLS-based sender-constraining is often impractical to deploy.
It is important to scope DPoP correctly: it is a token security mechanism concerned with sender-constraining tokens at the application layer, not a means of authenticating the end user. DPoP reduces the impact of token leakage; it does not by itself establish who the user is, which remains the concern of an authentication layer such as OpenID Connect. The exact protection DPoP provides depends on the RFC 9449 profile and on how the authorization server and resource server implement and validate proofs.
Who it's relevant to
Inside DPoP
Common questions
Answers to the questions practitioners most commonly ask about DPoP.
