Pacote de autenticação baseado em chaves da API para FASTAPI, focado na simplicidade e na facilidade de uso:
sqlite ou postgres , trabalhando com parâmetros de cabeçalho e consultaexample.env adicionado para mostrar como usar variáveis de ambiente.README.md atualizado para refletir alterações.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" }O aplicativo resultante é:

Inicie sua API e verifique os logs da tecla secreta gerada automaticamente se você não forneceu uma através de variáveis de ambiente.

Vá para /docs em sua API e informe esta chave secreta na caixa Authorize/Secret header . Todos os pontos de extremidade do administrador suportam apenas a segurança do cabeçalho para garantir que a chave secreta não seja compartilhada inadvertidamente ao compartilhar um URL.

Em seguida, você pode usar /auth/new para gerar uma nova chave de API.

E, finalmente, você pode usar essa chave da API para acessar o terminal seguro.

É claro que você pode automatizar a aquisição de chaves da API através do Python com requests e consultar diretamente os pontos de extremidade.
Se você o fizer, pode ocultar os pontos de extremidade da sua documentação da API com a variável de ambiente FASTAPI_AUTH_HIDE_DOCS .
Variáveis de ambiente:
FASTAPI_AUTH_SECRET : Chave do Administrador Secreto
FASTAPI_AUTH_HIDE_DOCS : se deve ou não ocultar os terminais relacionados à chave da API da documentação
FASTAPI_AUTH_DB_LOCATION : Localização do arquivo de banco de dados SQLite local
sqlite.db no diretório em execução por padrão FASTAPI_AUTH_AUTOMATIC_EXPIRATION : Duração, em dias, até que uma chave da API seja considerada expirada
DATABASE_MODE : Se definido como postgres , o pacote usará um banco de dados Postgres em vez de SQLite
URI : Localização do banco de dados do Postgres
postgresql://postgres:postgres@localhost:5432/postgres por padrãoDEV_MODE for definido como False Consulte CONTIBUTING.md para obter mais informações.
poetry install
poetry shellpre-commit installpytest A imagem do docker anexada executa um aplicativo de teste no localhost:8080 com chave secreta TEST_SECRET . Execute -o com:
docker-compose build && docker-compose up