Before you start
Before you enable DPoP in Auth0:
- Your upstream identity provider must support DPoP according to specification RFC-9449.
- You must have an existing OIDC or Okta Enterprise connection or be able to create one. To learn how to create an Enterprise connection in Auth0, read Enterprise Connections.
- The connection must not be configured to use Token Vault.
- The connection should use Proof Key for Code Exchange (PKCE) Authorization Code Flow + PKCE, which is enabled upstream if your identity provider supports PKCE.
- The connection must be type
back_channel.
Verify upstream IdP support
Examine your IdP’s OIDC discovery document to determine the DPoP support:dpop_signing_alg_values_supported.
Example
Choose a signing algorithm
Before you configure DPoP, choose a supported signing algorithm from the options:| Algorithm | Description | When to use |
|---|---|---|
| ES256 | ECDSA with P-256 curve and SHA-256 | Your identity provider supports ES256. |
| Ed25519 | EdDSA with Curve25519 | Your identity provider requires Ed25519 for compliance. |
Enable DPoP
Use the Management API to configure the DPoP JWT claim,alg, the signing algorithm for your Enterprise connection. To use the Management API, you need to get a Management API access token.
Make a PATCH request to the Update a connection endpoint with dpop_signing_alg_values_supported in the options object:
- YOUR_DOMAIN: Your Auth0 tenant domain. Example:
travel0.us.auth0.com. - YOUR_CONNECTION_ID: The ID of your OIDC or Okta Enterprise connection.
- YOUR_MANAGEMENT_API_TOKEN: A Management API token with
update:connectionsscope
Test DPoP
After enabling DPoP, test the configuration by initiating a login flow:- Navigate to your application.
- Start a login using your configured Enterprise connection.
- Complete authentication with your upstream identity provider.
- Check Auth0 logs by navigating to Auth0 Dashboard > Monitoring > Logs for confirmation.
Disable DPoP
To disable DPoP, remove thedpop_signing_alg property from your connection configuration:
Troubleshoot
Use the following recommendations to help diagnose and resolve issues with DPoP configuration for OIDC and Okta enterprise connections.Check configuration
Before you start to troubleshoot, verify your DPoP configuration.- Navigate to Auth0 Dashboard > Authentication > Enterprise.
- Select your Okta or OIDC connection.
- Verify the connection is not configured with Token Vault by navigating to Advanced Settings > Grant Types. Make sure Token Vault is not selected.
- Use Management API’s Update a connection endpoint to check the
dpop_signing_algsetting:
dpop_signing_alg property in the response:
Authentication fails after enabling DPoP
Review the following troubleshooting techniques if your users cannot complete authentication after you have enabled DPoP on your Okta or OIDC enterprise connection.Identity provider does not support DPoP
Check the IdP’s OpenID Connect discovery document:dpop_signing_alg_values_supported is missing, then the identity provider does not support DPoP. You need to disable DPoP for this connection or contact your identity provider to enable DPoP support.
Mismatch algorithm
The identity provider may not support the algorithm you configured. Check the supported algorithms in the discovery for the algorithm you selected for DPoP with Auth0:Token Vault conflict
DPoP is not compatible with Token Vault. Check your connection configuration with Management API’s Get a connection endpoint:upstream_params.offline_access is set to true, or the connection is configured for Token Vault, you must disable Token Vault before enabling DPoP.
Reject proof validation
Review the following troubleshooting techniques if you find authentication failures related to DPoP proof validation.Nonce requirement
Some IdP’s require anonce in the DPoP proof. Auth0 handles nonce requirements automatically, but network issues can prevent nonce exchange.
Review Auth0 logs for the following error:
IdP token binding
If user authentication succeeds, but Auth0 logs showdpop_returned_from_upstream: false, then your IdP might not bind tokens with DPoP even when Auth0 sends DPoP proofs. This may occur when:
- The requested resource does not support DPoP.
- The IdP’s policy does not allow DPoP for specific scenarios.
- The IdP encountered an error processing the DPoP proof.
token_type is Bearer instead of DPoP as shown in the example, the IdP issued a standard bearer token.
Example