Avant de commencer
Avant d’activer DPoP dans Auth0 :
- Votre fournisseur d’identité en amont doit prendre en charge DPoP conformément à la spécification RFC-9449.
- Vous devez déjà disposer d’une connexion d’entreprise OIDC ou Okta, ou être en mesure d’en créer une. Pour savoir comment créer une connexion d’entreprise dans Auth0, consultez Enterprise Connections.
- La connexion ne doit pas être configurée pour utiliser Token Vault.
- La connexion devrait utiliser le flux flux de code d’autorisation + PKCE, avec la clé de preuve pour l’échange de code (PKCE), si votre fournisseur d’identité en amont prend en charge PKCE.
- La connexion doit être de type
back_channel.
Vérifier la prise en charge par l’IdP en amont
dpop_signing_alg_values_supported.
Exemple
Choisissez un algorithme de signature
Choisissez ES256, sauf si votre fournisseur d’identité exige expressément un autre algorithme.
Activer DPoP
- Auth0 Dashboard
- Management API
Dans Auth0 Dashboard :
- Accédez à Authentication > Enterprise. Sélectionnez la connexion que vous souhaitez configurer.
- Sélectionnez l’onglet Credentials.
- Cochez la case Enable Demonstrating Proof of Possession (DPoP).
- Dans le menu sous Signing Algorithms for DPoP, choisissez votre algorithme.

- Sélectionnez Save.
Tester DPoP
- Accédez à votre application.
- Démarrez le flux de connexion à l’aide de votre connexion d’entreprise configurée.
- Terminez la connexion avec votre fournisseur d’identité externe.
- Consultez les logs Auth0 dans Auth0 Dashboard > Monitoring > Logs pour confirmer.
dpop_signing_alg et idp_token_type: "dpop" confirment qu’Auth0 a envoyé une preuve DPoP à l’aide de l’algorithme configuré et que votre IdP a émis des jetons liés à DPoP. L’objet upstream_userinfo_fetch n’est présent que si le point de terminaison Renseignements sur l’utilisateur est appelé. Le champ dpop_bound n’est présent que si la requête GET vers le point de terminaison /userinfo est correctement liée à DPoP.
Désactiver DPoP
- Auth0 Dashboard
- Management API
- Accédez à Authentication > Enterprise. Sélectionnez la connexion que vous souhaitez configurer.
- Sélectionnez l’onglet Credentials.
- Décochez la case Enable Demonstrating Proof of Possession (DPoP).
- Sélectionnez Enregistrer.
Dépannage
Vérifier la configuration Auth0
- Accédez à Auth0 Dashboard > Authentication > Enterprise.
- Sélectionnez votre connexion Okta ou OIDC.
- Vérifiez que la connexion n’est pas configurée avec Token Vault en accédant à Advanced Settings > Grant Types. Assurez-vous que Token Vault n’est pas sélectionné.
- Utilisez le point de terminaison Update a connection du Management API pour vérifier le paramètre
dpop_signing_alg:
dpop_signing_alg, vérifiez les éléments suivants :
- Vérifiez que l’algorithme fait partie des valeurs prises en charge : ES256, ES384, ES512 ou Ed25519.
- Vérifiez que la connexion utilise l’échange de jetons par back-channel au moyen du Flux de code d’autorisation + PKCE. DPoP n’est pas pris en charge pour les communications en front-channel, comme dans le Flux implicite, et est désactivé sans avertissement lorsque la connexion utilise le front-channel.
Champs DPoP manquants dans les logs du tenant
s) ou d’échec (f) d’Auth0 pour la connexion d’entreprise ne contiennent pas les champs dpop_signing_alg ou idp_token_type, cela peut être dû à l’une des causes suivantes :
- DPoP n’est pas configuré. Vérifiez que
dpop_signing_algest défini dans l’objetoptionsde la connexion à l’aide du point de terminaison Update a connection de la Management API, comme décrit ci-dessus. - Algorithme non pris en charge. Auth0 prend en charge ES256, ES384, ES512 et Ed25519. Si
dpop_signing_algest défini sur une valeur non prise en charge (par exemple, RS256), DPoP est désactivé en silence. Aucune erreur n’est consignée. Mettez à jour la connexion pour utiliser ES256, ES384, ES512 ou Ed25519. - Connexion front-channel. DPoP exige un type de connexion d’échange de jeton
back_channel. Vous devrez peut-être mettre à jour le grant type vers un flux back-channel comme Authorization Code Flow ou flux de code d’autorisation + PKCE.
L’authentification échoue après l’activation de DPoP
f) avec dpop_signing_alg, semblable à :
idp_token_type, car Auth0 n’a pas reçu de token de votre IdP.
Le fournisseur d’identité rejette la preuve DPoP
invalid_dpop_proof, ce qui entraîne l’échec de l’authentification.
Vérifiez que l’IdP prend en charge DPoP et que l’algorithme configuré (ES256, ES384, ES512 ou Ed25519) figure parmi les algorithmes pris en charge. Vous pouvez le confirmer en consultant le document de découverte OpenID Connect de l’IdP :
dpop_signing_alg_values_supported. Si ce champ est absent, il se peut que l’IdP ne prenne pas en charge DPoP. Si le champ ne répertorie que des algorithmes qu’Auth0 ne prend pas en charge (par exemple, uniquement RS256), DPoP ne peut pas être utilisé avec cette connexion. Vous devriez désactiver DPoP pour cette connexion ou communiquer avec votre IdP pour activer la prise en charge d’ES256, d’ES384, d’ES512 ou d’Ed25519.
L’échange de jetons échoue pour une raison autre que DPoP
dpop_signing_alg est présent, cela ne veut pas nécessairement dire que DPoP est à l’origine de l’échec. Auth0 ajoute des métadonnées DPoP à tous les logs d’échec lorsque DPoP est configuré, même si la cause sous-jacente n’a rien à voir avec DPoP. Par exemple, l’authentification peut échouer en raison d’un code d’autorisation expiré ou d’identifiants du client invalides.
Examinez la description de l’erreur dans le log d’échec pour déterminer la cause réelle. Les erreurs courantes non liées à DPoP comprennent : invalid_grant, invalid_client et les échecs de vérification de signature du ID token.
Échec de la génération de clé DPoP
Liaison des jetons de l’IdP
"idp_token_type": "bearer", il se peut que votre IdP ne lie pas les jetons avec DPoP, même lorsque Auth0 envoie des preuves DPoP. Conformément à la RFC 9449, ce comportement est conforme. L’IdP décide entièrement s’il émet ou non des jetons liés à DPoP et peut ne pas lier les jetons pour les raisons suivantes :
- La politique de l’IdP n’exige pas DPoP pour la ressource ou l’application demandée.
- L’IdP ne prend pas en charge DPoP, même s’il accepte la preuve sans erreur.
- L’IdP a rencontré un problème interne lors du traitement de la preuve DPoP.
Gestion du nonce DPoP
nonce dans la preuve DPoP conformément au §8. Lorsque votre IdP renvoie un code HTTP 400 avec un en-tête de réponse DPoP-Nonce, Auth0 relance automatiquement la requête de jeton avec le nonce fourni. Ce mécanisme est transparent et n’apparaît pas comme un échec dans les journaux du tenant.
Le code d’erreur use_dpop_nonce est un signal de protocole interne entre Auth0 et l’IdP. Il n’indique aucun problème. Vous ne devriez pas voir use_dpop_nonce comme motif d’une entrée de journal d’échec. Si la nouvelle tentative avec le nonce échoue elle aussi (par exemple, si le fournisseur d’identité renvoie invalid_dpop_proof à la deuxième tentative), c’est l’erreur finale qui apparaît dans le journal d’échec.
Si vous observez des échecs d’authentification répétés sur une connexion où le fournisseur d’identité exige des nonces, vérifiez la connectivité réseau entre Auth0 et le fournisseur d’identité. L’échange de nonce nécessite deux allers-retours vers le point de terminaison de jeton, ce qui augmente la sensibilité aux délais d’expiration réseau.