Skip to main content
Category: Authentication Factors

Proof of Possession

Also known as: PoP, Proof-of-Possession, POP
Simply put

Proof of Possession is a check that confirms a party actually holds a specific secret key, rather than just claiming to. It is used to make sure that whoever presents a credential or token is the legitimate holder of the private key tied to it, which helps prevent stolen tokens from being reused by an attacker.

Formal definition

Proof of Possession (PoP) is a verification process by which a relying party gains assurance that an entity actually controls the private key associated with a given public key. In the context of OAuth 2.0, PoP techniques are used to sender-constrain tokens so that a token is bound to a specific client's key and cannot simply be replayed by any bearer. RFC 9449 specifies one such application-level mechanism, Demonstrating Proof-of-Possession (DPoP), which binds access tokens (and, depending on configuration, refresh tokens) using asymmetric cryptography and JSON Web Tokens, requiring the client to demonstrate continued possession of the corresponding private key. PoP is a cryptographic assurance mechanism and is distinct from establishing user identity; the specific guarantees, token types covered, and replay protections depend on the profile and deployment. Note that DPoP is one particular PoP mechanism and the two terms are not interchangeable.

Why it matters

The predominant token format in OAuth 2.0 deployments is the bearer token, where possession of the token alone is sufficient to use it. This means that if an access token is intercepted, leaked through a misconfigured proxy, or exfiltrated from a compromised client, an attacker who obtains the token can typically replay it against the resource server as if they were the legitimate client. Proof of Possession addresses this class of risk by requiring the presenter to cryptographically demonstrate control of a specific private key, so that a stolen token cannot be reused by any party that does not also hold the corresponding key.

Sender-constraining tokens through PoP raises the bar for token theft because an attacker must obtain not only the token but also the private key material, which in many deployments is held only by the legitimate client and never transmitted. This narrows the window and value of intercepted tokens and is particularly relevant in architectures where tokens traverse multiple network hops or intermediaries. The strength of this protection, however, depends on the specific mechanism, the token types it covers, and how the private key is protected in the client environment; PoP is a cryptographic assurance about key control, not a guarantee of user identity or of end-to-end security.

Who it's relevant to

Security architects
Architects evaluating whether to move from bearer tokens to sender-constrained tokens need to understand where PoP mechanisms such as DPoP fit, which token types they cover, and what threat they mitigate. PoP reduces the impact of token interception but does not replace transport security or identity verification, so it should be positioned as one control among several.
IAM and OAuth engineers
Engineers implementing OAuth 2.0 clients and resource servers must handle the cryptographic operations that PoP requires, including key generation, protection of private keys, and the token-binding logic. For DPoP specifically, implementation follows RFC 9449 and involves asymmetric cryptography and JSON Web Tokens, with attention to which token types are bound in a given configuration.
Compliance and security review teams
Teams assessing token-handling risk can treat sender-constraining via PoP as a mitigation against token replay and theft. When reviewing a deployment, they should confirm the specific mechanism in use, the token types it protects, and how private keys are safeguarded, since the assurance provided depends on the profile and deployment rather than being uniform.

Inside PoP

Cryptographic Key Binding
Proof of Possession (PoP) ties a token or credential to a specific cryptographic key held by the client, so that possessing the token alone is insufficient; the holder must also demonstrate control of the associated private key. This is often referred to as sender-constrained or holder-of-key binding.
Demonstrating Proof-of-Possession (DPoP)
An application-layer mechanism (defined in OAuth 2.0 profiles) in which the client signs a DPoP proof JWT using a key it controls, allowing the authorization server and resource server to bind access and refresh tokens to that key. Exact behavior depends on the profile and deployment configuration.
Mutual TLS (mTLS) Certificate Binding
A transport-layer approach where the access token is bound to the client's TLS client certificate. The resource server confirms the presenting client uses the same certificate, constraining the token to that sender. This is one of several PoP methods rather than the only one.
PoP Proof Artifact
The signed data (for example, a DPoP proof JWT or a TLS handshake) that the client presents alongside the token to prove key possession. Note that signing this artifact provides integrity and origin assurance, not confidentiality; signed is not the same as encrypted.
Verification by the Relying Party
The resource server (acting as an enforcement point) validates both the token and the accompanying proof, confirming the presenter controls the bound key before granting access. This is a runtime enforcement concern distinct from how the token was originally issued.

Common questions

Answers to the questions practitioners most commonly ask about PoP.

Does a bearer token provide proof of possession?
No. A bearer token grants access to whoever presents it, without binding the token to the client that legitimately holds it. Proof of possession (PoP) specifically requires the presenter to demonstrate control of an associated key or secret, which a plain bearer token does not. This is precisely the distinction PoP mechanisms are designed to address: turning a token that anyone can replay into one that only the intended holder can use.
Is proof of possession a form of authenticating the end user?
Not directly. Proof of possession demonstrates that a party controls a specific cryptographic key or secret bound to a token or credential; it is about binding a credential to a holder, not about establishing the identity of a human user. User authentication (verifying who the principal is) is a separate step. PoP can strengthen the security of tokens issued after authentication, but it should not be conflated with the authentication step itself.
How is a token typically bound to a client key for proof of possession?
In most deployments, the token is associated with a public key (or a reference such as a thumbprint) at issuance, and the client later proves possession of the corresponding private key when presenting the token. Depending on the mechanism and profile, this binding may be carried in a confirmation claim within the token structure. The exact claim names, formats, and validation steps vary by the specific standard and profile in use, so implementers should confirm against the applicable specification.
What must a resource server do to validate a proof-of-possession token?
Beyond the usual token validation (such as verifying signature, issuer, audience, and expiry for a self-contained token), the resource server must additionally verify that the presenter controls the bound key. Depending on configuration, this typically means checking that the presented proof corresponds to the key referenced in the token's binding information. Note that a signed token confirms integrity and origin but does not by itself prove the presenter holds the bound key; the possession check is a distinct validation.
Where does proof of possession fit relative to transport-layer and application-layer protections?
PoP can be implemented at different layers depending on the mechanism. Some approaches bind tokens to the transport session, while others attach an application-layer proof to each request so the binding survives across intermediaries. The appropriate choice depends on your threat model, the presence of TLS-terminating proxies, and the specific profile supported by your identity provider and resource servers. Confirm which layer a given mechanism operates at before assuming end-to-end binding.
What operational considerations come with adopting proof of possession?
In practice, PoP introduces key management responsibilities on the client side, since clients must generate, store, and use private keys to produce proofs. It also requires resource servers to support the additional validation logic, and both parties must agree on a common mechanism and profile. Adoption is often limited by uneven support across libraries, vendors, and intermediaries, so interoperability testing is typically necessary. These implementation details vary by deployment context and standard profile.

Common misconceptions

Proof of Possession authenticates the end user.
PoP primarily constrains a token or credential to a holder that controls a specific key; it demonstrates possession of that key rather than establishing user identity on its own. User authentication is a separate step, typically handled by protocols such as OpenID Connect layered on OAuth 2.0. PoP strengthens how tokens are used, not who the user is.
A PoP-bound token is encrypted and therefore confidential.
PoP mechanisms typically rely on signed proof artifacts to demonstrate key control, which provides integrity and sender constraint but not confidentiality. A signed token or proof is not the same as an encrypted one; protecting the contents from disclosure requires separate measures.
Bearer tokens and PoP (sender-constrained) tokens are interchangeable.
A bearer token can be used by anyone who possesses it, while a PoP-bound token additionally requires the presenter to prove control of the associated key. They represent different security models, and moving from bearer to sender-constrained tokens generally requires deliberate configuration and client support.

Best practices

Choose a PoP method (for example, DPoP at the application layer or mTLS at the transport layer) that matches your deployment's client capabilities and infrastructure, rather than assuming one approach fits all cases.
Ensure client private keys used for PoP are protected in secure storage and never transmitted, since the security of the binding depends entirely on the key remaining under the client's exclusive control.
Validate both the token and the accompanying proof artifact at the resource server, confirming the presenter controls the bound key before authorizing the request.
Do not rely on PoP for confidentiality; apply separate encryption where token or payload contents must be protected from disclosure, and treat signing and encryption as distinct requirements.
Verify that your authorization server, clients, and resource servers all support the same PoP profile and version, because behavior and interoperability vary by vendor and standard profile.
Treat PoP as a runtime enforcement enhancement for how tokens are presented, and keep it distinct from user authentication and from identity lifecycle concerns such as provisioning and access reviews.
Promotional banner highlighting failures found in PCI audits and how to spot the gaps