Guide Auth0 DPoP
Liez les access tokens à la clé cryptographique du client pour que les tokens volés ne puissent pas être rejeu.
Aperçu
Qu'est-ce que DPoP ?
DPoP (Demonstrating Proof-of-Possession) est un mécanisme OAuth 2.0 défini dans RFC 9449 qui lie cryptographiquement les access tokens à une paire de clés détenue par le client. Chaque requête API inclut un JWT signé de courte durée (la preuve DPoP) qui prouve que l'expéditeur détient la clé privée — un token volé seul ne peut pas être rejeu par un attaquant.
Quand utiliser cette compétence
- Protéger les appels API à valeur élevée contre le vol et le rejeu de tokens
- Répondre à des exigences de sécurité ou de conformité qui imposent des tokens liés à l'expéditeur
- Toute application SPA ou Vanilla JS appelant une API Auth0 protégée avec des besoins de sécurité accrus
Quand NE PAS utiliser cette compétence
- Environnements SSR / côté serveur — DPoP repose sur une clé privée détenue dans le navigateur ; elle ne peut pas être utilisée en toute sécurité côté serveur (Next.js, Nuxt, etc.)
- APIs ne supportant pas DPoP — le serveur de ressources doit être configuré pour accepter le dialecte DPoP ; les APIs Bearer uniquement rejetteront les preuves DPoP
- Flux nécessitant le partage de tokens — les tokens DPoP sont liés à une seule paire de clés et ne peuvent pas être transférés à ou réutilisés par un autre client
Prérequis
- Tenant Auth0 avec serveur d'autorisation compatible DPoP
- Serveur de ressources API avec dialecte de tokens DPoP activé
- Une SPA navigateur utilisant l'une de :
@auth0/auth0-vue,@auth0/auth0-react,@auth0/auth0-angular, ou@auth0/auth0-spa-js - HTTPS en production (requis par Auth0 pour DPoP)
Concepts clés
| Concept | Description |
|---|---|
| DPoP Proof | Un JWT signé de courte durée attaché à chaque requête prouvant la possession de la clé |
| DPoP Nonce | Une valeur émise par le serveur qui doit être incluse dans la preuve pour prévenir le rejeu |
useDpop: true |
Option SDK qui active la génération automatique de preuves DPoP |
createFetcher() |
Fonction d'aide SDK qui retourne une fonction compatible fetch gérant les preuves automatiquement |
UseDpopNonceError |
Erreur levée quand le serveur fait tourner son nonce en vol ; réessayez avec le nouveau nonce |
Étape 1 : Activer DPoP sur votre API
Via Auth0 Dashboard
- Allez à Applications → APIs
- Sélectionnez l'API que votre SPA appelle
- Sous l'onglet Settings, confirmez que l'identifiant API correspond à votre
audience - Aucun bouton bascule supplémentaire n'est nécessaire dans le tableau de bord — DPoP est activé par requête par le client quand le serveur de ressources API est configuré pour accepter les tokens DPoP
Via Auth0 CLI
# Inspecter les paramètres du serveur de ressources actuel
auth0 api get "resource-servers" | jq '.[] | select(.identifier == "https://your-api-identifier")'
# Activer le dialecte de tokens DPoP sur l'API
auth0 api patch "resource-servers/{API_ID}" \
--data '{"token_dialect": "access_token_authz"}'
Remplacez
{API_ID}par l'ID retourné par l'appel GET ci-dessus.
Étape 2 : Configurer votre application
Motif courant pour tous les frameworks
- Ajoutez
useDpop: trueà votre configuration client/provider Auth0 aux côtés de votreaudience - Utilisez
createFetcher()au lieu d'attacher les tokens manuellement — le SDK gère la génération des preuves, la gestion du nonce et l'injection d'en-têtes pour vous - Gérez
UseDpopNonceErrordans les cas où le serveur fait tourner son nonce
Variables d'environnement
Assurez-vous que votre .env inclut l'audience API :
# Vite
VITE_AUTH0_DOMAIN=your-tenant.auth0.com
VITE_AUTH0_CLIENT_ID=your-client-id
VITE_AUTH0_AUDIENCE=https://your-api-identifier
Ressources supplémentaires
Exemples de framework
Exemples d'implémentation complets pour tous les frameworks supportés :
- Vue.js
- React
- Angular
- auth0-spa-js (Vanilla JS)
Guide d'intégration
Gestion des erreurs et dépannage :
UseDpopNonceError— gestion de la rotation du nonce- Problèmes courants
Compétences connexes
auth0-vue- Intégration Auth0 Vue.jsauth0-react- Intégration Auth0 Reactauth0-angular- Intégration Auth0 Angularauth0-spa-js- Intégration SPA Vanilla JS / agnostique du frameworkauth0-mfa- Authentification multifacteur