auth0-dpop

Par auth0 · agent-skills

À utiliser pour ajouter la liaison de token DPoP (Demonstrating Proof-of-Possession) afin de protéger les appels API avec des access tokens liés à l'appareil et contraints à l'émetteur, qui ne peuvent pas être rejoués en cas de vol. À utiliser également lorsqu'un utilisateur dit « lier les tokens au client », « empêcher le vol de tokens » ou « tokens contraints à l'émetteur ».

npx skills add https://github.com/auth0/agent-skills --skill auth0-dpop

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

  1. Allez à Applications → APIs
  2. Sélectionnez l'API que votre SPA appelle
  3. Sous l'onglet Settings, confirmez que l'identifiant API correspond à votre audience
  4. 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

  1. Ajoutez useDpop: true à votre configuration client/provider Auth0 aux côtés de votre audience
  2. 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
  3. Gérez UseDpopNonceError dans 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.js
  • auth0-react - Intégration Auth0 React
  • auth0-angular - Intégration Auth0 Angular
  • auth0-spa-js - Intégration SPA Vanilla JS / agnostique du framework
  • auth0-mfa - Authentification multifacteur

Références

Skills similaires