DPoP (Demostración de prueba de posesión)
Comprenda DPoP, un mecanismo que vincula criptográficamente los tokens de acceso al cliente, refuerza la seguridad de los tokens y evita su exfiltración.
DPoP (Demostración de prueba de posesión) es una lección gratuita de OAuth2 & OpenID Connect Deep Dive en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de OAuth2 & OpenID Connect Deep Dive, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de OAuth2 & OpenID Connect Deep Dive incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
What is DPoP?
Welcome! Today we'll explore DPoP, which stands for Demonstrating Proof-of-Possession. It's a crucial security enhancement for OAuth2 and OpenID Connect.
DPoP helps prevent a major security risk: stolen access tokens. It ensures that only the legitimate client (the app) can use an access token.
The Token Theft Problem
Imagine an attacker steals an access token. Without DPoP, they could use this token to access your protected resources, impersonating the legitimate client.
This 'token exfiltration' is a significant vulnerability. Standard bearer tokens don't inherently prevent this because anyone who 'bears' (possesses) the token can use it.
How DPoP Solves It
DPoP cryptographically binds an access token to a specific client's private key. Think of it like a digital signature that only the rightful client can produce.
Here's the core idea:
- The client generates a unique key pair.
- The public key is linked to the access token.
- The client 'proves possession' of the private key with every request.
Client's Secret Key Pair
The process starts with the client application generating an asymmetric cryptographic key pair. This means it creates both a private key and a public key.
- The private key is kept secret by the client.
- The public key can be shared without compromising security.
This key pair is unique to the client session or instance.
Requesting a DPoP Token
When the client requests an access token from the Authorization Server, it includes a special header called DPoP in the request.
This DPoP header contains a JSON Web Token (JWT) signed by the client's private key. This JWT includes a hash of the client's public key.
The DPoP JWT & jkt Claim
The JWT in the DPoP header is the 'proof of possession'. It contains several claims:
jkt: The JSON Web Key Thumbprint of the client's public key.htm: The HTTP method of the request (e.g., GET, POST).htu: The HTTP URL of the request.iat: Issued At time, preventing replay.
The Authorization Server validates this JWT and binds the jkt to the issued access token.
Using a DPoP-Bound Token
Once the client receives a DPoP-bound access token, it uses it to access protected resources on the Resource Server.
With every request to the Resource Server, the client must again send a new DPoP header containing a fresh JWT, signed by its private key, matching the current request's htm and htu.
Resource Server Validation
The Resource Server performs critical checks:
- It verifies the signature of the DPoP JWT using the public key derived from its
jktclaim. - It ensures the
jktin the DPoP JWT matches thejktstored within the access token itself. - It checks that the
htmandhtuclaims in the DPoP JWT match the actual HTTP request.
If any check fails, access is denied. This ensures only the client possessing the private key can use the token.
DPoP vs. Mutual TLS (mTLS)
You might wonder about Mutual TLS (mTLS). Both DPoP and mTLS bind tokens to a client, but they operate at different layers:
- mTLS: Binds at the TLS (transport) layer using client certificates.
- DPoP: Binds at the application layer using cryptographic proofs in HTTP headers.
DPoP is often more flexible and easier to implement for a wider range of client types (especially public clients like mobile apps) compared to mTLS.
Test Your DPoP Knowledge
Which of the following are key benefits of using DPoP in OAuth2/OIDC implementations?
DPoP: A Stronger Bind
Congratulations! You've learned about DPoP, a powerful security mechanism.
DPoP enhances OAuth2 and OIDC by cryptographically binding access tokens to the client's private key, effectively preventing token exfiltration and making stolen tokens unusable by attackers.
This 'proof of possession' significantly strengthens the security posture of your applications by ensuring only the legitimate client can use its access tokens.
Aprende OAuth2 & OpenID Connect Deep Dive con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 12
- Lecciones
- 48
Preguntas frecuentes
¿La lección «DPoP (Demostración de prueba de posesión)» es gratis?
Sí — el texto completo de «DPoP (Demostración de prueba de posesión)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de OAuth2 & OpenID Connect Deep Dive, actualiza a CoddyKit PRO. El curso de OAuth2 & OpenID Connect Deep Dive incluye 4 lecciones en total.
¿Qué aprenderé en «DPoP (Demostración de prueba de posesión)»?
Comprenda DPoP, un mecanismo que vincula criptográficamente los tokens de acceso al cliente, refuerza la seguridad de los tokens y evita su exfiltración. Practicas OAuth2 & OpenID Connect Deep Dive con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar OAuth2 & OpenID Connect Deep Dive?
No se requiere experiencia previa. OAuth2 & OpenID Connect Deep Dive en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «DPoP (Demostración de prueba de posesión)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de OAuth2 & OpenID Connect Deep Dive?
Sí. Cada lección de OAuth2 & OpenID Connect Deep Dive incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- FAPI y API de grado financiero
- DPoP (Demostración de prueba de posesión)
- Protocolo de evaluación continua del acceso (CAEP)
- Solicitudes de autorización enviadas (PAR)