Skip to main content
Prérequis : Avant de commencer, assurez-vous d’avoir installé les éléments suivants :
  • Python 3.9 ou une version ultérieure
  • pip 20.0 ou une version ultérieure
  • jq - Nécessaire pour configurer l’Auth0 CLI
Compatibilité avec les versions de Flask : Ce guide de démarrage rapide utilise Flask 2.0+ avec l’extra [async] pour la prise en charge de l’asynchrone.

Commencer

Ce guide de démarrage rapide montre comment ajouter l’authentification Auth0 à une application Flask. Vous créerez une application Web sécurisée avec une fonction de connexion, des routes protégées et l’accès au profil utilisateur à l’aide du SDK Python Auth0 WebApp.
1

Configurez votre environnement

Créez un nouveau répertoire pour votre projet Flask :
Créez un environnement virtuel :
2

Installer les dépendances

Créez requirements.txt pour suivre vos dépendances :
requirements.txt
Le fichier requirements.txt répertorie toutes les dépendances du projet. Pour les installer, exécutez :
3

Configurez votre Auth0 App

Ensuite, vous devez créer une nouvelle application sur votre tenant Auth0 et ajouter les variables d’environnement à votre projet.Vous pouvez configurer automatiquement votre application Auth0 en exécutant une commande CLI ou le faire manuellement via le Dashboard :
Exécutez la commande shell suivante dans le répertoire racine de votre projet pour créer une application Auth0 et générer un fichier .env :
Cette commande va :
  1. Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
  2. Créer une Auth0 Regular Web Application configurée pour http://localhost:5000
  3. Générer un fichier .env avec AUTH0_DOMAIN, AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRET, AUTH0_SECRET et AUTH0_REDIRECT_URI
4

Créez la configuration d’authentification, les routes et les modèles

Créer des fichiers
Et ajoutez les extraits de code suivants :
Développement seulement : Cet exemple utilise de simples classes de stockage en mémoire (MemoryStateStore et MemoryTransactionStore) à des fins de démonstration. Ces mécanismes de stockage perdront toutes les données de session au redémarrage de votre application et ne fonctionneront pas dans des déploiements à plusieurs instances.Pour les applications de production, vous devez mettre en place un stockage persistant. Le SDK est indépendant du framework et exige que vous fournissiez des implémentations personnalisées de StateStore et de TransactionStore. Consultez les exemples officiels de stockage du SDK pour des conseils détaillés sur la mise en œuvre de Redis, PostgreSQL ou d’autres systèmes de stockage persistants.
5

Lancez votre application

Démarrez le serveur de développement Flask :
Votre application sera accessible à l’adresse http://localhost:5000. Le SDK Auth0 gère automatiquement les routes d’authentification.
VérificationVous devriez maintenant disposer d’une page de connexion Auth0 entièrement fonctionnelle accessible sur votre localhost

Utilisation avancée

Si vous devez envoyer une requête à une API protégée, récupérez un jeton d’accès :
Pour utiliser cette fonctionnalité, vous devez :
  1. Définir AUTH0_AUDIENCE dans votre fichier .env
  2. Inclure offline_access dans vos scopes (pour les refresh tokens)
  3. Mettre à jour authorization_params dans auth.py :
Par défaut, le SDK utilise un stockage basé sur les cookies. Pour les environnements de production ayant des besoins particuliers (mise à l’échelle horizontale, partage de sessions entre services), vous pouvez configurer des backends de stockage personnalisés comme Redis ou PostgreSQL.Quand utiliser un stockage personnalisé :
  • Vous devez partager des sessions entre plusieurs serveurs
  • Vos données de session dépassent les limites de taille des cookies
  • Vous avez besoin d’une gestion centralisée des sessions pour le backchannel logout
Exemple avec Redis :
auth.py
Pour la plupart des applications, le stockage par défaut basé sur les cookies suffit. Le stockage personnalisé exige l’implémentation de l’interface StateStore. Consultez les exemples du SDK pour voir des mises en œuvre détaillées.

Problèmes courants

Problème : Vous voyez “MissingRequiredArgumentError: secret” au démarrage de l’applicationCause : La variable d’environnement AUTH0_SECRET est absente ou n’est pas chargée correctement.Solution :
  1. Vérifiez que votre fichier .env se trouve à la racine du projet
  2. Assurez-vous que python-dotenv est installé : pip install python-dotenv
  3. Générez un nouveau secret au besoin : openssl rand -hex 64
  4. Ajoutez-le au fichier .env : AUTH0_SECRET=your_generated_secret
  5. Redémarrez votre application Flask
Problème : Vous voyez l’erreur “Callback URL mismatch” ou “invalid_request” lors de la connexionCause : Le Redirect URI dans votre code ne correspond pas à ce qui est enregistré dans Auth0 Dashboard.Solution :
  1. Vérifiez votre fichier .env : AUTH0_REDIRECT_URI=http://localhost:5000/callback
  2. Accédez à Auth0 Dashboard → Applications → Votre application → Settings
  3. Ajoutez http://localhost:5000/callback à Allowed Callback URLs
  4. Cliquez sur Save Changes
  5. Redémarrez votre application Flask
Problème : Vous voyez “RuntimeError: This event loop is already running” ou une erreur asynchrone similaireCause : La prise en charge asynchrone de Flask 2.0+ peut poser problème avec certaines configurations.Solution :Installez Flask avec la prise en charge asynchrone :
Redémarrez ensuite votre application Flask.
Problème : Vous voyez “ModuleNotFoundError: No module named ‘auth0_server_python’” ou un message similaireCause : Le SDK n’est pas installé ou l’environnement virtuel n’est pas activé.Solution :
  1. Assurez-vous que votre environnement virtuel est activé :
  2. Installez le SDK :
  3. Vérifiez l’installation :
Problème : Vous voyez l’erreur “ClaimDecodingFailed” ou “Failed to decode claims” pendant l’authentificationCause : Le ID token ou le jeton d’accès reçu d’Auth0 n’a pas pu être décodé correctement, souvent pour l’une des raisons suivantes :
  • Format JWT invalide
  • Données de session corrompues
  • Algorithmes de signature incompatibles
  • Décalage horaire entre votre serveur et Auth0
Solution :
  1. Assurez-vous que votre AUTH0_CLIENT_SECRET est correct dans le fichier .env
  2. Vérifiez que l’heure de votre système est synchronisée (NTP) :
  3. Effacez les cookies du navigateur et relancez l’authentification
  4. Vérifiez que AUTH0_DOMAIN n’inclut pas le préfixe https://
  5. Vérifiez que Auth0 Dashboard → Applications → Your App → Settings → Advanced → OAuth → JsonWebToken Signature Algorithm correspond à la configuration de votre SDK
Problème : Vous voyez les erreurs “Token has expired” ou “invalid_token”Cause : Le jeton d’accès ou l’ID token a dépassé sa durée de validité, ou la session a expiré.Solution :
  1. Le SDK gère automatiquement l’actualisation du jeton si vous incluez la portée offline_access :
  2. Pour les API, assurez-vous de demander de nouveaux jetons :
  3. Ajustez la durée de validité des jetons dans Auth0 Dashboard → Applications → Your App → Settings → Advanced → OAuth
  4. Prévoyez une gestion appropriée des erreurs afin de rediriger les utilisateurs vers la page de connexion lorsque les jetons expirent
Problème : Vous voyez des erreurs CORS ou “Blocked by CORS policy” dans la console du navigateurCause : L’origine de votre application n’est pas configurée correctement dans Auth0.Solution :
  1. Ajoutez l’origine de votre application dans Auth0 Dashboard → Applications → Your App → Settings:
    • Allowed Web Origins: http://localhost:5000
    • Allowed Callback URLs: http://localhost:5000/callback
    • Allowed Logout URLs: http://localhost:5000
  2. En Production, ajoutez vos URL de production :
  3. Assurez-vous que votre application Flask a une configuration CORS appropriée si elle envoie des requêtes aux API Auth0 depuis le code Javascript côté client :
Problème : Vous voyez les erreurs “Too many requests” ou “Rate limit exceeded”Cause : Votre application a dépassé les limites de débit d’Auth0 pour les requêtes d’authentification.Solution :
  1. Consultez Auth0 Dashboard → Monitoring → Logs pour obtenir des détails sur les limites de débit
  2. Mettez en place une temporisation exponentielle pour les nouvelles tentatives :
  3. Vérifiez les limites de votre forfait d’abonnement Auth0
  4. Optimisez le flux d’authentification pour réduire les requêtes de jeton inutiles
  5. Mettez les jetons en cache de façon appropriée au lieu d’en demander souvent de nouveaux