Skip to main content

Une bibliothèque d'authentification JWT simple pour FastAPI.

Project description

🚀 Fast JWT Auth 🔒

PyPI version License: MIT

Fast JWT 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.

from fastapi import FastAPI, Depends
from fast_jwt import FastJWT
from datetime import timedelta

app = FastAPI()

# Initialisez FastJWT avec votre clé secrète
# 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)

2. Création de Tokens 🎟️

Générez des tokens d'accès et de rafraîchissement pour un utilisateur, par exemple dans une route de connexion.

@app.post("/login")
def login(LoginRequest: LoginRequest):
    # votre logique ici
    # Créez un token d'accès avec une expiration de 30 minutes
    access_token = fast_jwt.create_access_token(
        user_id=user_id, expires_delta=timedelta(minutes=30) # par defaut: 15 min
    )
    # Créez un token de rafraîchissement avec une expiration de 7 jours
    refresh_token = fast_jwt.create_refresh_token(
        user_id=user_id, expires_delta=timedelta(days=7) # par default: 3 jours
    )
    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 la secret_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

fast_jwt_auth-0.1.5.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fast_jwt_auth-0.1.5-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file fast_jwt_auth-0.1.5.tar.gz.

File metadata

  • Download URL: fast_jwt_auth-0.1.5.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for fast_jwt_auth-0.1.5.tar.gz
Algorithm Hash digest
SHA256 e5b8856f0e642a65d0c91b1528ea387aa36a8b5eb9ebae9f7535bd1b1f4863b4
MD5 4df18d4c98781ae36295a7fe36d4f35a
BLAKE2b-256 eaf9fcff38bb2feebfc5bf5fbbdd6d2e6e52010467117704bfabff346b45c18e

See more details on using hashes here.

File details

Details for the file fast_jwt_auth-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: fast_jwt_auth-0.1.5-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

Hashes for fast_jwt_auth-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 eedf61e5096af4d2a03b1e6540286fa0d353e1ff255c9a24c54f67ae4c07b69d
MD5 df1dbae6f43147dbb16da99283ab3c35
BLAKE2b-256 5b31360b9b468a609ff5007bad6832c33a6c4d91671dd78954f97714b8f23643

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page