Passer au contenu principal

Instruction à l’IA

Vous utilisez l’IA pour intégrer Auth0 ? Ajoutez cette invite à Cursor, Windsurf, Copilot, Claude Code ou votre IDE IA préféré pour accélérer le développement.
Ce guide de démarrage rapide nécessite :
  • Python 3.9 ou une version ultérieure
  • Le gestionnaire de paquets pip
  • jq - requis pour la configuration d’Auth0 CLI
  • Une connaissance de FastAPI
Si ce n’est pas déjà fait, créez un compte Auth0 gratuit pour suivre ce guide.
Ce guide montre comment intégrer Auth0 à une API FastAPI pour ajouter l’authentification et protéger vos endpoints.
1

Créer un projet FastAPI

Créez un nouveau répertoire pour votre projet FastAPI, puis configurez un environnement virtuel.
2

Installer les dépendances

Créez un fichier requirements.txt contenant les dépendances suivantes :
requirements.txt
Installez les dépendances :
3

Configurez votre API Auth0

Vous devrez créer une API Auth0 pour représenter votre application FastAPI.
  1. Accédez à Applications > APIs dans l’Auth0 Dashboard
  2. Cliquez sur Create API
  3. Saisissez un Name pour votre API (p. ex., “My FastAPI API”)
  4. Définissez l’Identifier sur l’identifiant de votre API (p. ex., https://my-fastapi-api)
  5. Laissez Signing Algorithm à RS256
  6. Cliquez sur Create
L’Identifier est un identifiant unique pour votre API. Nous recommandons d’utiliser une URL, mais elle n’a pas à être accessible publiquement — Auth0 ne l’appellera pas. Cette valeur ne peut pas être modifiée par la suite.
Prenez note des valeurs Domaine et Identifier (Audience). Vous en aurez besoin à l’étape suivante.
4

Définir les permissions de l’API

Les permissions (aussi appelées scopes) vous permettent de définir comment votre API peut être accessible. Vous pouvez créer des permissions pour votre API dans Auth0 Dashboard.
  1. Dans Auth0 Dashboard, accédez à l’onglet Permissions de votre API
  2. Ajoutez les permissions suivantes :
    • read:messages avec la description “Lire les messages”
    • write:messages avec la description “Écrire les messages”
Ces permissions serviront à contrôler l’accès à des points de terminaison précis de votre API.
5

Configurer l’application Auth0

Créez un fichier .env à la racine de votre projet pour y stocker votre configuration d’Auth0 :
.env
Remplacez YOUR_AUTH0_DOMAIN par votre domaine Auth0 (par exemple, dev-abc123.us.auth0.com) et YOUR_API_IDENTIFIER par l’identifiant que vous avez défini lors de la création de votre API.
N’ajoutez jamais votre fichier .env au contrôle de version. Ajoutez-le à votre fichier .gitignore pour protéger vos identifiants.
Créez maintenant un fichier app.py et initialisez votre application FastAPI avec Auth0 :
app.py
6

Créer des routes protégées

Ajoutez les routes suivantes à votre fichier app.py. Elles illustrent différents niveaux de contrôle d’accès :
app.py
La méthode require_auth() valide le jeton d’accès envoyé dans l’en-tête Authorization. Lorsqu’elle est appelée avec un paramètre scopes, elle vérifie également que le jeton contient la permission spécifiée.
7

Lancez votre API

Démarrez votre application FastAPI :
Votre API fonctionne maintenant à l’adresse http://localhost:8000.
Ouvrez http://localhost:8000/api/public dans votre navigateur. Vous devriez voir le message public sans avoir à vous authentifier.

Testez votre API

Pour tester les points de terminaison protégés, vous devez obtenir un jeton d’accès auprès d’Auth0.

Obtenir un jeton d’accès

Le moyen le plus simple d’obtenir un jeton d’accès à des fins de test est de passer par Auth0 Dashboard :
  1. Accédez à Applications > APIs dans Auth0 Dashboard
  2. Sélectionnez votre API
  3. Cliquez sur l’onglet Test
  4. Cliquez sur Copy Token dans la section Asking Auth0 for tokens from my application

Appelez votre API

Utilisez le jeton d’accès pour appeler votre point de terminaison protégé :
Vous devriez recevoir une réponse contenant le message privé et votre ID utilisateur. Pour tester le point de terminaison associé à ce scope, assurez-vous que votre jeton inclut le scope read:messages :
Si votre jeton n’a pas le scope requis, vous recevrez une réponse 403 Forbidden.

Utilisation avancée

Vous pouvez accéder aux revendications personnalisées ajoutées au jeton d’accès à l’aide d’Auth0 Actions.Accédez aux revendications personnalisées dans votre gestionnaire de route :
Pour ajouter des revendications personnalisées à vos jetons d’accès, créez une Auth0 Action :
  1. Accédez à Actions > bibliothèque dans l’Auth0 Dashboard
  2. Cliquez sur Create Action
  3. Sélectionnez Build from scratch
  4. Donnez un nom à votre action et sélectionnez le déclencheur Login / Post Login
  5. Ajoutez vos revendications personnalisées :
  1. Cliquez sur Deploy et ajoutez l’action à votre flux de connexion
Les revendications personnalisées doivent utiliser un format avec espace de noms (p. ex. https://myapp.example.com/claim_name) afin d’éviter les conflits avec les revendications standard.
Si vous devez protéger un point de terminaison sans avoir besoin d’accéder aux revendications, vous pouvez utiliser le paramètre dependencies :
Cela valide le jeton d’accès, mais n’injecte pas les revendications dans votre fonction.
DPoP (Demonstrating Proof-of-Possession) est actuellement en Accès anticipé. Communiquez avec Auth0 support pour l’activer pour votre locataire.
DPoP renforce la sécurité en liant cryptographiquement les jetons d’accès à l’application cliente qui les a demandés. Cela empêche le vol de jetons et les attaques par rejeu.Le SDK active la prise en charge de DPoP par défaut. Vous pouvez configurer le comportement de DPoP :
Le mode mixte (par défaut) accepte à la fois les jetons Bearer et DPoP :
Le mode DPoP uniquement rejette les jetons Bearer :
Lorsque vous utilisez DPoP, les applications clientes doivent inclure à la fois les en-têtes Authorization: DPoP <token> et DPoP: <proof>. Le SDK valide automatiquement la preuve DPoP et l’associe au jeton d’accès.
Activez trust_proxy uniquement lorsque votre application se trouve derrière un proxy inverse approuvé. Ne l’activez jamais pour des applications exposées directement à Internet.
Si votre application s’exécute derrière un proxy inverse (nginx, AWS ALB, etc.), vous devez activer la confiance envers le proxy pour que la validation DPoP fonctionne correctement :
Configurez votre proxy inverse pour transférer les en-têtes nécessaires :
C’est essentiel pour la validation DPoP, car le SDK doit faire correspondre exactement l’URL utilisée par l’application cliente. Sans confiance envers le proxy, votre application voit des URL internes, tandis que les preuves DPoP font référence à des URL externes, ce qui entraîne des échecs de validation.
Le SDK déclenche une HTTPException en cas d’erreurs d’authentification. FastAPI les gère automatiquement et renvoie au client les réponses HTTP appropriées.Vous pouvez mettre en place une gestion personnalisée des erreurs au besoin :
Les erreurs d’authentification comprennent :
  • 401 Unauthorized : jeton d’accès manquant, invalide ou expiré
  • 403 Forbidden : jeton valide, mais permissions insuffisantes (scopes)

Problèmes courants

Problème : La validation du jeton échoue avec l’erreur « Invalid audience ».Solution : Vérifiez que AUTH0_AUDIENCE dans votre fichier .env correspond exactement à l’Identifier que vous avez configuré pour votre API dans l’Auth0 Dashboard.
  1. Ouvrez l’Auth0 Dashboard et accédez à Applications > APIs
  2. Sélectionnez votre API
  3. Vérifiez la valeur Identifier dans l’onglet Settings
  4. Mettez à jour votre fichier .env :
  5. Redémarrez votre application
Problème : La validation du jeton échoue avec l’erreur « Invalid issuer ».Solution : Vérifiez que votre AUTH0_DOMAIN est correct et qu’il n’inclut pas le protocole https://.Votre domaine devrait ressembler à dev-abc123.us.auth0.com, et non à https://dev-abc123.us.auth0.com.Mettez à jour votre fichier .env :
Problème : Le point de terminaison protégé retourne un code 403 même avec un jeton d’accès valide.Solution : Le jeton d’accès n’inclut pas le scope requis.
  1. Vérifiez quels scopes sont requis par votre point de terminaison
  2. Lorsque vous demandez un jeton, assurez-vous d’inclure les scopes requis
  3. Vérifiez que le scope existe dans l’onglet permission de votre API dans l’Auth0 Dashboard
  4. Décodez votre jeton sur jwt.io pour vérifier qu’il contient la revendication scope avec les valeurs requises
Problème : Python ne parvient pas à trouver le SDK Auth0 FastAPI.Solution : Assurez-vous que le SDK est installé dans votre environnement virtuel actif.
Problème : L’application ne parvient pas à récupérer les clés de signature depuis Auth0.Solution : Vérifiez votre connectivité réseau et la configuration de votre domaine.
  1. Vérifiez que votre domaine est accessible :
  2. Vérifiez que votre pare-feu autorise les connexions HTTPS sortantes (port 443) vers *.auth0.com
  3. Si vous êtes derrière un proxy d’entreprise, configurez les variables d’environnement HTTP_PROXY et HTTPS_PROXY
Problème : L’authentification DPoP retourne des erreurs liées à l’URL ou à la validation de la preuve.Solution :
  1. Si vous êtes derrière un proxy inverse, activez la confiance du proxy :
  2. Vérifiez que votre proxy transmet ces en-têtes :
    • X-Forwarded-Proto
    • X-Forwarded-Host
    • X-Forwarded-Prefix
  3. Assurez-vous que DPoP est activé pour votre locataire (contactez Auth0 Support)
  4. Vérifiez que la revendication htu de la preuve DPoP correspond exactement à l’URL de votre requête

Prochaines étapes

Documentation du SDK

Explorez le SDK Auth0 FastAPI sur GitHub pour la configuration avancée et des exemples

Scopes et permissions

Découvrez comment définir et utiliser les scopes pour un contrôle d’accès granulaire

Auth0 Actions

Personnalisez votre flux d’authentification et ajoutez des claims personnalisés aux jetons

Documentation FastAPI

Découvrez les fonctionnalités de FastAPI, les modèles asynchrones et les pratiques exemplaires

Autorisation de l’API

Implémentez le contrôle d’accès basé sur les rôles (RBAC) pour votre API

Déployer en production

Pratiques exemplaires pour déployer des applications FastAPI avec Auth0