Skip to main content

Consigne pour l’IA

Vous utilisez l’IA pour intégrer Auth0 ? Ajoutez cette invite à Cursor, Windsurf, Copilot, Claude Code ou votre IDE préféré propulsé par l’IA pour accélérer le développement.
Ce Quickstart 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, inscrivez-vous pour obtenir un compte Auth0 gratuit afin de 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 nouveau projet FastAPI

Créez un nouveau répertoire pour votre projet FastAPI et mettez en place 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 le 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 le Signing Algorithm à RS256
  6. Cliquez sur Create
L’Identifier est un identifiant unique pour votre API. Nous vous recommandons d’utiliser une URL, mais elle n’a pas à être accessible publiquement — Auth0 n’y enverra aucune requête. Cette valeur ne peut pas être modifiée par la suite.
Prenez en note les valeurs Domain et Identifier (Audience). Vous en aurez besoin à l’étape suivante.
4

Définir les permissions d’API

Les permissions (aussi appelées scopes) vous permettent de définir comment il est possible d’accéder à votre API. Vous pouvez créer des permissions pour votre API dans l’Auth0 Dashboard.
  1. Dans l’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 le client Auth0

Créez un fichier .env à la racine de votre projet pour y stocker votre configuration Auth0 :
.env
Remplacez YOUR_AUTH0_DOMAIN par votre domaine Auth0 (p. ex. 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.
Ne validez jamais votre fichier .env dans le contrôle de version. Ajoutez-le à votre fichier .gitignore afin de protéger vos informations d’identification.
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. Ces routes 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 le paramètre scopes, elle vérifie également que le jeton contient la permission spécifiée.
7

Exécutez votre API

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

Testez votre API

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

Obtenir un jeton d’accès

La façon la plus simple d’obtenir un jeton d’accès pour effectuer des tests est de passer par l’Auth0 Dashboard :
  1. Accédez à Applications > APIs dans l’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

Interrogez votre API

Utilisez le jeton d’accès pour effectuer une requête à votre point de terminaison protégé :
Vous devriez recevoir une réponse contenant le message privé et votre ID d’utilisateur. Pour tester ce point de terminaison à portée limitée, assurez-vous que votre jeton inclut la portée read:messages :
Si votre token ne comporte pas le scope requis, vous recevrez une réponse 403 Forbidden.

Utilisation avancée

Vous pouvez accéder aux claims personnalisés ajoutés au jeton d’accès au moyen d’Auth0 Actions.Accédez aux claims personnalisés dans votre handler de route :
Pour ajouter des claims personnalisés à vos jetons d’accès, créez une Auth0 Action :
  1. Accédez à Actions > Library 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 Trigger Login / Post Login
  5. Ajoutez vos claims personnalisés :
  1. Cliquez sur Deploy et ajoutez l’action à votre Login flow
Les claims personnalisés doivent utiliser un format avec espace de noms (p. ex. https://myapp.example.com/claim_name) afin d’éviter les conflits avec les claims standard.
Si vous devez protéger un endpoint sans avoir besoin d’accéder aux claims, vous pouvez utiliser le paramètre dependencies :
Cela valide le jeton d’accès, sans injecter les claims dans votre fonction.
DPoP (Demonstrating Proof-of-Possession) est actuellement en Early Access. Communiquez avec Auth0 soutien pour l’activer pour votre tenant.
DPoP offre une sécurité renforcée en liant cryptographiquement les jetons d’accès au client qui les a demandés. Cela aide à prévenir le vol de jetons et les replay attacks.Le SDK active le soutien pour DPoP par défaut. Vous pouvez configurer le comportement de DPoP :
Mode mixte (par défaut) accepte à la fois les jetons Bearer et DPoP :
Mode DPoP בלבד rejette les jetons Bearer :
Lorsque vous utilisez DPoP, les clients 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.
N’activez trust_proxy que lorsque votre application se trouve derrière un proxy inverse de confiance. 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 transmettre 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 le client. 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 soulève une exception 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 n’inclut pas le protocole https://.Votre domaine doit 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 votre point de terminaison requiert
  2. Lorsque vous demandez un jeton, assurez-vous d’inclure les scopes requis
  3. Vérifiez que le scope existe dans l’onglet Permissions de votre API dans l’Auth0 Dashboard
  4. Décodez votre jeton sur jwt.io pour vérifier qu’il contient le claim scope avec les valeurs requises
Problème : Python ne trouve pas l’Auth0 FastAPI SDK.Solution : assurez-vous que le SDK est installé dans votre environnement virtuel actif.
Problème : l’application ne peut pas récupérer les clés de signature depuis Auth0.Solution : vérifiez votre connectivité réseau et la configuration du 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 proof.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 tenant (contactez le soutien Auth0)
  4. Vérifiez que le claim htu de la DPoP proof correspond exactement à l’URL de votre requête

Prochaines étapes

Documentation du SDK

Découvrez le SDK Auth0 FastAPI sur GitHub pour des options de configuration avancées et des exemples

Scopes et permissions

Apprenez à définir et à utiliser des scopes pour un contrôle d’accès précis

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 d’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