Instruction à l’IA
Instruction à l’IA
- 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
Créer un projet FastAPI
Installer les dépendances
requirements.txt contenant les dépendances suivantes :Configurez votre API Auth0
- Auth0 Dashboard
- CLI
- Accédez à Applications > APIs dans l’Auth0 Dashboard
- Cliquez sur Create API
- Saisissez un Name pour votre API (p. ex., “My FastAPI API”)
- Définissez l’Identifier sur l’identifiant de votre API (p. ex.,
https://my-fastapi-api) - Laissez Signing Algorithm à RS256
- Cliquez sur Create
Définir les permissions de l’API
- Dans Auth0 Dashboard, accédez à l’onglet Permissions de votre API
- Ajoutez les permissions suivantes :
read:messagesavec la description “Lire les messages”write:messagesavec la description “Écrire les messages”
Configurer l’application Auth0
.env à la racine de votre projet pour y stocker votre configuration d’Auth0 :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.Créez maintenant un fichier app.py et initialisez votre application FastAPI avec Auth0 :Créer des routes protégées
app.py. Elles illustrent différents niveaux de contrôle d’accès :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.Testez votre API
Obtenir un jeton d’accès
- Accédez à Applications > APIs dans Auth0 Dashboard
- Sélectionnez votre API
- Cliquez sur l’onglet Test
- Cliquez sur Copy Token dans la section Asking Auth0 for tokens from my application
Appelez votre API
read:messages :
Utilisation avancée
Valider les revendications personnalisées
Valider les revendications personnalisées
- Accédez à Actions > bibliothèque dans l’Auth0 Dashboard
- Cliquez sur Create Action
- Sélectionnez Build from scratch
- Donnez un nom à votre action et sélectionnez le déclencheur Login / Post Login
- Ajoutez vos revendications personnalisées :
- Cliquez sur Deploy et ajoutez l’action à votre flux de connexion
https://myapp.example.com/claim_name) afin d’éviter les conflits avec les revendications standard.Protéger les points de terminaison sans utiliser de revendications
Protéger les points de terminaison sans utiliser de revendications
dependencies :Prise en charge de DPoP
Prise en charge de DPoP
Authorization: DPoP <token> et DPoP: <proof>. Le SDK valide automatiquement la preuve DPoP et l’associe au jeton d’accès.Configurer pour un proxy inverse
Configurer pour un proxy inverse
Gestion des erreurs
Gestion des erreurs
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 :- 401 Unauthorized : jeton d’accès manquant, invalide ou expiré
- 403 Forbidden : jeton valide, mais permissions insuffisantes (scopes)
Problèmes courants
401 Non autorisé - Invalid audience
401 Non autorisé - Invalid audience
AUTH0_AUDIENCE dans votre fichier .env correspond exactement à l’Identifier que vous avez configuré pour votre API dans l’Auth0 Dashboard.- Ouvrez l’Auth0 Dashboard et accédez à Applications > APIs
- Sélectionnez votre API
- Vérifiez la valeur Identifier dans l’onglet Settings
- Mettez à jour votre fichier
.env: - Redémarrez votre application
401 Non autorisé - Invalid issuer
401 Non autorisé - Invalid issuer
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 :403 Interdit - Insufficient scope
403 Interdit - Insufficient scope
- Vérifiez quels scopes sont requis par votre point de terminaison
- Lorsque vous demandez un jeton, assurez-vous d’inclure les scopes requis
- Vérifiez que le scope existe dans l’onglet permission de votre API dans l’Auth0 Dashboard
- Décodez votre jeton sur jwt.io pour vérifier qu’il contient la revendication
scopeavec les valeurs requises
ModuleNotFoundError: No module named 'fastapi_plugin'
ModuleNotFoundError: No module named 'fastapi_plugin'
Impossible de se connecter à Auth0 (échec de récupération de JWKS)
Impossible de se connecter à Auth0 (échec de récupération de JWKS)
-
Vérifiez que votre domaine est accessible :
-
Vérifiez que votre pare-feu autorise les connexions HTTPS sortantes (port 443) vers
*.auth0.com -
Si vous êtes derrière un proxy d’entreprise, configurez les variables d’environnement
HTTP_PROXYetHTTPS_PROXY
La validation DPoP échoue
La validation DPoP échoue
-
Si vous êtes derrière un proxy inverse, activez la confiance du proxy :
-
Vérifiez que votre proxy transmet ces en-têtes :
X-Forwarded-ProtoX-Forwarded-HostX-Forwarded-Prefix
- Assurez-vous que DPoP est activé pour votre locataire (contactez Auth0 Support)
-
Vérifiez que la revendication
htude la preuve DPoP correspond exactement à l’URL de votre requête