Antes de comenzar
Antes de habilitar DPoP en Auth0:
- Tu Proveedor de identidad (IdP) ascendente debe ser compatible con DPoP según la especificación RFC-9449.
- Debes tener una conexión empresarial de OIDC u Okta ya creada, o poder crear una. Para obtener más información sobre cómo crear una conexión empresarial en Auth0, consulta Enterprise Connections.
- La conexión no debe estar configurada para usar Token Vault.
- La conexión debe usar Proof Key for Code Exchange (PKCE) Authorization Code Flow + PKCE, que debe estar habilitado en el sistema ascendente si tu proveedor de identidad admite PKCE.
- La conexión debe ser de tipo
back_channel.
Verifique la compatibilidad del IdP de origen
dpop_signing_alg_values_supported compatible con DPoP.
Ejemplo
Elija un algoritmo de firma
| Algoritmo | Descripción | Cuándo usarlo |
|---|---|---|
| ES256 | ECDSA con curva P-256 y SHA-256 | Su proveedor de identidad admite ES256. |
| ES384 | ECDSA con curva P-384 y SHA-384 | Su proveedor de identidad requiere ES384. |
| ES512 | ECDSA con curva P-521 y SHA-512 | Su proveedor de identidad requiere ES512. |
| Ed25519 | EdDSA con Curve25519 | Su proveedor de identidad requiere Ed25519 por motivos de cumplimiento. |
Habilitar DPoP
- Auth0 Dashboard
- Management API
En Auth0 Dashboard:
- Vaya a Authentication > Enterprise. Seleccione la conexión que quiera configurar.
- Seleccione la pestaña Credentials.
- Marque la casilla Enable Demonstrating Proof of Possession (DPoP).
- En el menú Signing Algorithms for DPoP, elija el algoritmo.

- Seleccione Save.
Probar DPoP
- Vaya a su aplicación.
- Inicie el flujo de inicio de sesión con la conexión empresarial configurada.
- Complete el inicio de sesión con su proveedor de identidad ascendente.
- Consulte los registros de Auth0 y vaya a Auth0 Dashboard > Monitoring > Logs para confirmarlo.
dpop_signing_alg e idp_token_type: "dpop" confirman que Auth0 envió una prueba DPoP con el algoritmo configurado y que tu IdP emitió tokens vinculados a DPoP. El objeto upstream_userinfo_fetch solo está presente si se llama al endpoint de Información del usuario. El campo dpop_bound solo está presente si la solicitud GET al endpoint /userinfo queda correctamente vinculada a DPoP.
Deshabilitar DPoP
- Auth0 Dashboard
- Management API
- Vaya a Authentication > Enterprise. Seleccione la conexión que desea configurar.
- Seleccione la pestaña Credentials.
- Desmarque la casilla Enable Demonstrating Proof of Possession (DPoP).
- Seleccione Save.
Solución de problemas
Compruebe la configuración de Auth0
- Vaya a Auth0 Dashboard > Authentication > Enterprise.
- Seleccione su conexión de Okta u OIDC.
- Verifique que la conexión no esté configurada con Token Vault. Para ello, vaya a Advanced Settings > Grant Types. Asegúrese de que Token Vault no esté seleccionado.
- Use el endpoint Update a connection de Management API para comprobar la configuración de
dpop_signing_alg:
dpop_signing_alg, compruebe lo siguiente:
- Verifique que el algoritmo sea uno de los valores admitidos: ES256, ES384, ES512 o Ed25519.
- Verifique que la conexión use el intercambio de tokens por back-channel mediante Authorization Code Flow + PKCE. DPoP no es compatible con las comunicaciones por front-channel, como en Implicit Flow, y se desactiva silenciosamente cuando la conexión usa el front-channel.
Faltan campos de DPoP en los registros del inquilino
s) o fallo (f) de Auth0 para la conexión empresarial no contienen los campos dpop_signing_alg o idp_token_type, podría deberse a una de las siguientes causas:
- DPoP no está configurado. Verifique que
dpop_signing_algesté definido en el objetooptionsde la conexión mediante el endpoint Update a connection de la Management API, como se describió anteriormente. - Algoritmo no compatible. Auth0 admite ES256, ES384, ES512 y Ed25519. Si
dpop_signing_algestá definido con un valor no compatible (por ejemplo, RS256), DPoP se desactiva silenciosamente. No se registra ningún error. Actualice la conexión para usar ES256, ES384, ES512 o Ed25519. - Conexión front-channel. DPoP requiere un tipo de conexión de intercambio de tokens
back_channel. Es posible que deba actualizar el tipo de concesión a un flujo back-channel, como Authorization Code Flow o Authorization Code Flow + PKCE.
La autenticación falla después de habilitar DPoP
f) con dpop_signing_alg, similar a:
idp_token_type porque Auth0 no recibió ningún token de su IdP.
El proveedor de identidad rechaza la prueba DPoP
invalid_dpop_proof, lo que hace que falle la autenticación.
Compruebe que el IdP admita DPoP y que el algoritmo configurado (ES256, ES384, ES512 o Ed25519) esté en la lista de algoritmos compatibles. Puede comprobarlo accediendo al documento de descubrimiento de OpenID Connect del IdP:
dpop_signing_alg_values_supported. Si este campo no está presente, es posible que el IdP no admita DPoP. Si el campo solo enumera algoritmos que Auth0 no admite (por ejemplo, solo RS256), no se puede usar DPoP con esta conexión. Debe deshabilitar DPoP para esta conexión o ponerse en contacto con su IdP para habilitar la compatibilidad con ES256, ES384, ES512 o Ed25519.
El intercambio de tokens falla por un motivo no relacionado con DPoP
dpop_signing_alg, eso no significa necesariamente que DPoP haya causado el fallo. Auth0 adjunta metadatos de DPoP a todos los registros de error cuando DPoP está configurado, incluso si la causa raíz no está relacionada. Por ejemplo, la autenticación podría fallar porque el code de autorización ha vencido o porque las credenciales del cliente no son válidas.
Examine la descripción del error en el registro para determinar la causa real. Entre los errores habituales no relacionados con DPoP se incluyen invalid_grant, invalid_client y los errores de verificación de la firma del token de ID.
Error en la generación de claves DPoP
Vinculación de tokens del IdP
"idp_token_type": "bearer", es posible que su IdP no vincule los tokens a DPoP incluso cuando Auth0 envía pruebas de DPoP. Según la RFC 9449, este es un comportamiento conforme. El IdP tiene control total sobre si emite tokens vinculados a DPoP y puede no vincularlos por los siguientes motivos:
- La política del IdP no requiere DPoP para el recurso o la aplicación solicitados.
- El IdP no admite DPoP a pesar de aceptar la prueba sin errores.
- El IdP encontró un problema interno al procesar la prueba de DPoP.
Gestión del nonce de DPoP
nonce en la prueba DPoP según §8. Cuando el IdP devuelve un HTTP 400 con el encabezado de respuesta DPoP-Nonce, Auth0 reintenta automáticamente la solicitud de token con el nonce proporcionado. Esto se gestiona de forma transparente y no aparece como un fallo en los registros del inquilino.
El código de error use_dpop_nonce es una señal interna del protocolo entre Auth0 y el IdP. No indica ningún problema. No deberías ver use_dpop_nonce como motivo de una entrada de registro de fallo. Si el reintento con el nonce también falla (por ejemplo, si el proveedor de identidad devuelve invalid_dpop_proof en el segundo intento), en el registro de fallos aparecerá el error final.
Si observas fallos de autenticación repetidos en una conexión en la que el proveedor de identidad requiere nonces, comprueba la conectividad de red entre Auth0 y el proveedor de identidad. El intercambio de nonce requiere dos viajes de ida y vuelta al endpoint del token, lo que aumenta la sensibilidad a los tiempos de espera de la red.