Paquete de autenticación basado en la llave API para FASTAPI, centrado en la simplicidad y la facilidad de uso:
sqlite o postgres , trabajando con parámetros de encabezado y consultaexample.env para mostrar cómo usar las variables de entorno.README.md actualizado para reflejar los cambios.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" }La aplicación resultante es:

Inicie su API y verifique los registros de la clave secreta generada automáticamente si no proporcionó una a través de las variables de entorno.

Vaya a /docs en su API e informe esta clave secreta en el cuadro Authorize/Secret header . Todos los puntos finales del administrador solo admiten la seguridad del encabezado para asegurarse de que la clave secreta no se comparta inadvertidamente al compartir una URL.

Luego, puede usar /auth/new para generar una nueva clave API.

Y finalmente, puede usar esta clave API para acceder al punto final seguro.

Por supuesto, puede automatizar la adquisición de clave API a través de Python con requests y consultar directamente los puntos finales.
Si lo hace, puede ocultar los puntos finales de su documentación de API con la variable de entorno FASTAPI_AUTH_HIDE_DOCS .
Variables de entorno:
FASTAPI_AUTH_SECRET : clave de administrador secreto
FASTAPI_AUTH_HIDE_DOCS : si ocultar o no los puntos finales relacionados con la tecla API de la documentación
FASTAPI_AUTH_DB_LOCATION : ubicación del archivo local de base de datos SQLite
sqlite.db en el directorio de ejecución de forma predeterminada FASTAPI_AUTH_AUTOMATIC_EXPIRATION : duración, en días, hasta que se considera una clave API expirada
DATABASE_MODE : si se establece en postgres , el paquete usará una base de datos Postgres en lugar de SQLite
URI : Ubicación de la base de datos de Postgres
postgresql://postgres:postgres@localhost:5432/postgres por defectoDEV_MODE se establece en False Consulte CONTIBUTING.md para obtener más información.
poetry install
poetry shellpre-commit installpytest La imagen de Docker adjunta ejecuta una aplicación de prueba en localhost:8080 con la clave secreta TEST_SECRET . Ejecutarlo con:
docker-compose build && docker-compose up