Une bibliothèque d'authentification JWT simple pour FastAPI.
Project description
🚀 Fast JWT Auth 🔒
Fast JWT Auth est une bibliothèque d'authentification JWT simple et légère pour FastAPI. Elle fournit des dépendances faciles à utiliser pour protéger vos routes et gérer les tokens d'accès et de rafraîchissement.
✨ Fonctionnalités
- Création de Tokens : Générez des tokens d'accès et de rafraîchissement en une seule ligne de code.
- Protection de Routes : Utilisez des dépendances FastAPI pour sécuriser vos points de terminaison.
- Validation Automatique : Décodage et validation automatiques des tokens, y compris la gestion de l'expiration.
- Facile à Utiliser : Conçu pour être simple et intuitif, vous permettant de sécuriser votre API en quelques minutes.
📦 Installation
pip install fast-jwt-auth
uv add fast-jwt-auth
🚀 Utilisation de base
Voici un exemple simple de la façon d'utiliser Fast JWT dans une application FastAPI.
1. Initialisation ⚙️
Créez une instance de FastJWT avec votre clé secrète. Vous pouvez également configurer l'algorithme et les temps d'expiration des tokens.
from fastapi import FastAPI, Depends
from fast_jwt import FastJWT
from datetime import timedelta
app = FastAPI()
# Initialisez FastJWT avec votre clé secrète et des temps d'expiration personnalisés
# ATTENTION : Ne codez jamais la clé en dur, utilisez des variables d'environnement !
secret_key = "votre_cle_secrete_super_securisee"
fast_jwt = FastJWT(
secret_key=secret_key,
access_token_expires=timedelta(minutes=30), # par défaut: 15 min
refresh_token_expires=timedelta(days=7) # par défaut: 3 jours
)
2. Création de Tokens 🎟️
Générez des tokens d'accès et de rafraîchissement pour un utilisateur. Les temps d'expiration sont ceux définis lors de l'initialisation de FastJWT.
@app.post("/login")
def login(LoginRequest: LoginRequest):
# votre logique ici
# Créez des tokens d'accès et de rafraîchissement
access_token = fast_jwt.create_access_token(user_id=user_id)
refresh_token = fast_jwt.create_refresh_token(user_id=user_id)
return {"access_token": access_token, "refresh_token": refresh_token}
3. Protection des Routes 🛡️
Utilisez la dépendance auth_required pour protéger vos routes.
@app.get("/protected", dependencies=[Depends(fast_jwt.auth_required)])
def protected_route():
return {"message": "Vous avez accès à cette route sécurisée !"}
4. Obtenir les informations de l'utilisateur 👤
La dépendance get_current_user décode le token et retourne le sub (sujet), qui est généralement l'ID de l'utilisateur.
@app.get("/user/me")
def read_users_me(user_id: str = Depends(fast_jwt.get_current_user)):
# votre logique ici
return {"user_id": user_id}
5. Rafraîchissement de Token 🔄
Créez une route pour permettre aux utilisateurs de rafraîchir leurs tokens d'accès en utilisant un token de rafraîchissement.
@app.post("/refresh")
def refresh(new_tokens: dict = Depends(fast_jwt.refresh_token)):
return new_tokens # {"access_token": new_access_token, "refresh_token": new_refresh_token}
⚠️ Considérations de Sécurité
- Gestion de la
secret_key: La sécurité de vos tokens JWT dépend entièrement de lasecret_key. Ne la codez jamais en dur dans votre application ! Chargez-la depuis des variables d'environnement ou un gestionnaire de secrets.
🤝 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
⚖️ Licence
Ce projet est sous licence MIT.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fast_jwt_auth-0.1.8.tar.gz.
File metadata
- Download URL: fast_jwt_auth-0.1.8.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0632d3b18e1d46d7b5be733b876505f66e669b4aeea3e3ca429f68fd679f73f8
|
|
| MD5 |
0a52157807387ad28fa811dc99ab3ccb
|
|
| BLAKE2b-256 |
4bc6293eab9fa325e02ab06750ea8d3cbc1f04b80e7045a05a880538f2a89b89
|
File details
Details for the file fast_jwt_auth-0.1.8-py3-none-any.whl.
File metadata
- Download URL: fast_jwt_auth-0.1.8-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9178d4b172e99a15882192135c2a9961efaaa2c44c9f87cd6de3991cb4712ad
|
|
| MD5 |
62b44ceaed0c08dad374c24f42495233
|
|
| BLAKE2b-256 |
37543be99438abc5f2701b412addcee595b6f0c89d86d1352f84c6938b0dcbed
|