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 disposer d’une connexion d’entreprise OIDC ou Okta existante, ou être en mesure d’en créer une. Pour savoir comment créer une connexion d’entreprise dans Auth0, consultez Connexions d’entreprise.
- La connexion ne doit pas être configurée pour utiliser Token Vault.
- La connexion devrait utiliser Proof Key for Code Exchange (PKCE) Authorization Code Flow + PKCE, qui est activé en amont si votre fournisseur d’identité 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
| Algorithme | Description | Quand l’utiliser |
|---|---|---|
| ES256 | ECDSA avec la courbe P-256 et SHA-256 | Votre fournisseur d’identité prend en charge ES256. |
| ES384 | ECDSA avec la courbe P-384 et SHA-384 | Votre fournisseur d’identité exige ES384. |
| ES512 | ECDSA avec la courbe P-521 et SHA-512 | Votre fournisseur d’identité exige ES512. |
| Ed25519 | EdDSA avec Curve25519 | Votre fournisseur d’identité exige Ed25519 pour des raisons de conformité. |
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é.
- Consultez les journaux d’Auth0 en accédant à 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’apparaît que si le point de terminaison Informations sur l’utilisateur est appelé. Le champ dpop_bound n’apparaît 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 Save.
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 pour utiliser 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 de la Management API pour vérifier le paramètre
dpop_signing_alg:
dpop_signing_alg, vérifiez les points suivants :
- Vérifiez que l’algorithme correspond à l’une des valeurs prises en charge : ES256, ES384, ES512 ou Ed25519.
- Vérifiez que la connexion utilise l’échange de jeton par back-channel avec Authorization Code Flow + PKCE. DPoP n’est pas pris en charge pour les communications en front-channel, comme avec Implicit Flow, et est désactivé silencieusement lorsque la connexion utilise le front-channel.
Champs DPoP manquants dans les journaux du locataire
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 à une valeur non prise en charge (par exemple, RS256), DPoP est désactivé sans avertissement. Aucune erreur n’est consignée. Mettez à jour la connexion pour utiliser ES256, ES384, ES512 ou Ed25519. - Connexion front-channel. DPoP nécessite un type de connexion d’échange de jeton
back_channel. Vous devrez peut-être mettre à jour le type d’octroi vers un flux back-channel, comme Authorization Code Flow ou Authorization Code Flow + 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 jeton 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 dans la liste des algorithmes pris en charge. Vous pouvez le vérifier 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 indique uniquement des algorithmes qu’Auth0 ne prend pas en charge (par exemple, RS256 seulement), DPoP ne peut pas être utilisé avec cette connexion. Vous devriez désactiver DPoP pour cette connexion ou communiquer avec votre IdP pour faire activer la prise en charge d’ES256, d’ES384, d’ES512 ou d’Ed25519.
L’échange de jeton échoue pour une raison non liée à DPoP
dpop_signing_alg est présent, cela ne signifie pas nécessairement que DPoP est à l’origine de l’échec. Auth0 ajoute des métadonnées DPoP à tous les journaux d’échec lorsque DPoP est configuré, même si la cause réelle n’a aucun lien avec DPoP. Par exemple, l’authentification peut échouer en raison d’un code d’autorisation expiré ou d’identifiants d’application invalides.
Examinez la description de l’erreur dans le journal d’échec pour déterminer la cause exacte. Les erreurs courantes non liées à DPoP comprennent : invalid_grant, invalid_client et les échecs de vérification de la signature du jeton d’identité.
Échec de la génération de la clé DPoP
Liaison des jetons de l’IdP
"idp_token_type": "bearer", il se peut que votre IdP ne lie pas les jetons à DPoP, même lorsque Auth0 envoie des preuves DPoP. Selon la RFC 9449, ce comportement est conforme. L’IdP contrôle entièrement s’il émet ou non des jetons liés à DPoP et peut ne pas lier les jetons pour les raisons suivantes :
- La stratégie 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 comportement est géré de façon transparente et n’apparaît pas comme un échec dans les journaux du locataire.
Le code d’erreur use_dpop_nonce est un signal de protocole interne entre Auth0 et l’IdP. Il n’indique pas un problème. Vous ne devriez pas voir use_dpop_nonce comme cause d’une entrée de journal d’échec. Si la nouvelle tentative avec le nonce échoue 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 du nonce nécessite deux allers-retours vers le point de terminaison du jeton, ce qui accroît la sensibilité aux délais d’expiration réseau.