Home - lucaszub/fastapi-azure-auth GitHub Wiki
FastAPI Azure Authentication Template
Ce projet fournit un template simple pour utiliser l'authentification avec Azure Active Directory dans une application FastAPI, en utilisant SQLAlchemy pour la gestion de la base de données et MySQL sur Azure. Le but est de simplifier l'intégration de l'authentification Azure et de fournir un modèle prêt à l'emploi pour des applications nécessitant cette fonctionnalité.
Prérequis
Avant de commencer, assurez-vous que vous avez les éléments suivants :
- Un compte Azure et un abonnement actif.
- Un environnement Python (version 3.8 ou supérieure recommandé).
- Azure MySQL ou une autre base de données compatible.
pip
pour installer les dépendances.
Installation
-
Clonez ce dépôt sur votre machine locale.
git clone https://github.com/yourusername/azure-auth-fastapi.git cd azure-auth-fastapi
-
Créez un environnement virtue et activez-le.
python3 -m venv venv source venv/bin/activate # Sur Windows : venv\Scripts\activate
-
Installez les dépendances du projet.
pip install -r requirements.txt
-
Configurez les variables d'environnement. Créez un fichier .env à la racine du projet avec les informations de connexion de votre base de données MySQL Azure. Exemple de fichier .env :
DB_USER=your_database_user DB_PASSWORD=your_database_password DB_HOST=your_database_host DB_PORT=3306 DB_NAME=your_database_name DB_SSL_CA=path_to_your_ssl_certificate
-
Lancer l'application Démarrez le serveur FastAPI avec Uvicorn:
uvicorn main:app --reload
L'application sera accessible à http://127.0.0.1:8000.
Strcture du projet
Voici la structure de base du projet :
.
├── main.py # Point d'entrée de l'application FastAPI
├── database.py # Gestion de la connexion à la base de données Azure
├── models.py # Modèles de la base de données SQLAlchemy
├── auth.py # Gestion de l'authentification Azure
├── .env # Fichier de configuration des variables d'environnement
└── requirements.txt # Liste des dépendances du projet
Description des fichiers :
- main.py : Contient la logique principale de l'application FastAPI et le point d'entrée pour les requêtes HTTP.
- db_utils.py : Contient la logique de connexion à la base de données MySQL sur Azure et la configuration de SQLAlchemy.
- models.py : Contient les modèles SQLAlchemy pour la base de données, en particulier le modèle Users pour la gestion des utilisateurs.
- auth.py : Gère l'authentification Azure, incluant les fonctions pour valider l'utilisateur et sécuriser les endpoints de l'API.
- .env : Fichier contenant les variables d'environnement sensibles (comme les informations de connexion à la base de données).
Utilisation
- Endpoints disponibles :
- GET /: Retourne les informations de l'utilisateur connecté. Nécessite une authentification via Azure AD. (a développer par la suite
Exemple de requête :
curl -X 'GET' \
'http://127.0.0.1:8000/' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
- Authentification: Le projet utilise un middleware pour gérer l'authentification Azure. Les utilisateurs doivent s'authentifier via Azure Active Directory pour accéder aux ressources sécurisées.
- Base de données : Ce template utilise MySQL comme base de données pour stocker les informations des utilisateurs. Assurez-vous que la base de données est bien configurée et accessible.
Contribution
Si vous souhaitez contribuer à ce projet, n'hésitez pas à ouvrir une pull request. Voici quelques points d'amélioration possibles :
- Ajouter des tests unitaires.
- Améliorer la gestion des erreurs.
- Ajouter des fonctionnalités d'autorisation avancées (par exemple, les rôles utilisateur).