Package d'authentification basé sur la clé API pour FastAPI, axé sur la simplicité et la facilité d'utilisation:
sqlite ou postgres local, en travaillant avec les paramètres d'en-tête et de requêteexample.env Fichier pour montrer comment utiliser les variables d'environnement.README.md pour refléter les modifications.mysql . pip install fastapi_auth2
from fastapi import Depends , FastAPI
from fastapi_auth import api_key_router , api_key_security
app = FastAPI (
description = "FastAPI Auth is a package that provides authentication based API security with FastAPI and Postgres Database, SQLite Database or MongoDB Database" ,
title = "FastAPI Auth Example" ,
version = 1.0 ,
)
app . include_router ( api_key_router , prefix = "/auth" , tags = [ "_auth" ])
@ app . get ( "/unsecure" )
async def unsecure_endpoint ():
return { "message" : "This is a unsecure endpoint" }
@ app . get ( "/secure" , dependencies = [ Depends ( api_key_security )])
async def secure_endpoint ():
return { "message" : "This is a secure endpoint" }L'application résultante est:

Démarrez votre API et vérifiez les journaux de la clé secrète générée automatiquement si vous n'en avez pas fourni une via les variables d'environnement.

Accédez à /docs sur votre API et informez cette clé secrète dans la boîte Authorize/Secret header . Tous les points de terminaison de l'administrateur ne prennent en charge la sécurité de l'en-tête pour s'assurer que la clé secrète n'est pas partagée par inadvertance lors du partage d'une URL.

Ensuite, vous pouvez utiliser /auth/new pour générer une nouvelle clé API.

Et enfin, vous pouvez utiliser cette touche API pour accéder au point de terminaison sécurisé.

Vous pouvez bien sûr automatiser l'acquisition de clés de l'API via Python avec requests et interroger directement les points de terminaison.
Si vous le faites, vous pouvez masquer les points de terminaison de votre documentation API avec la variable d'environnement FASTAPI_AUTH_HIDE_DOCS .
Variables d'environnement:
FASTAPI_AUTH_SECRET : clé administratrice secrète
FASTAPI_AUTH_HIDE_DOCS : s'il faut masquer ou non les points de terminaison liés à la clé de l'API de la documentation
FASTAPI_AUTH_DB_LOCATION : emplacement du fichier de base de données SQLite local
sqlite.db dans le répertoire en cours d'exécution par défaut FASTAPI_AUTH_AUTOMATIC_EXPIRATION : durée, en jours, jusqu'à ce qu'une clé API soit considérée
DATABASE_MODE : Si défini sur postgres , le package utilisera une base de données Postgres au lieu de SQLite
URI : Emplacement de la base de données Postgres
postgresql://postgres:postgres@localhost:5432/postgres par défautDEV_MODE est défini sur False Voir CONTIBUTING.md pour plus d'informations.
poetry install
poetry shellpre-commit installpytest L'image Docker jointe exécute une application de test sur localhost:8080 avec Secret Key TEST_SECRET . Exécutez-le avec:
docker-compose build && docker-compose up