API -ключевой пакет аутентификации для FASTAPI, сфокусированный на простоте и простоте использования:
sqlite или postgres , работая с параметрами заголовка и запросовexample.env .README.md , чтобы отразить изменения.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" }Получающееся приложение:

Запустите свой API и проверьте журналы для автоматически сгенерированного секретного ключа, если вы не предоставили его через переменные среды.

Зайдите в /docs на свой API и сообщите об этом секретном ключе в ящике Authorize/Secret header . Все конечные точки администратора поддерживают только безопасность заголовка, чтобы убедиться, что секретный ключ не случайно разделен при обмене URL.

Затем вы можете использовать /auth/new для создания нового ключа API.

И, наконец, вы можете использовать этот ключ API для доступа к безопасной конечной точке.

Конечно, вы можете автоматизировать приобретение ключей API через Python с requests и непосредственно запросить конечные точки.
Если вы это сделаете, вы можете скрыть конечные точки от вашей документации API с переменной среды FASTAPI_AUTH_HIDE_DOCS .
Переменные среды:
FASTAPI_AUTH_SECRET : Ключ секретного администратора
FASTAPI_AUTH_HIDE_DOCS : скрывать ли конечные точки, связанные с клавиш API, из документации
FASTAPI_AUTH_DB_LOCATION : местоположение локального файла базы данных SQLITE
sqlite.db в каталоге Running по умолчанию по умолчанию FASTAPI_AUTH_AUTOMATIC_EXPIRATION : Продолжительность, в дни, пока ключ API не сочтется истекшим
DATABASE_MODE : если установлено в postgres , пакет будет использовать базу данных Postgres вместо sqlite
URI : расположение базы данных Postgres
postgresql://postgres:postgres@localhost:5432/postgres по умолчаниюDEV_MODE установлен на False См. CONTIBUTING.md для получения дополнительной информации.
poetry install
poetry shellpre-commit installpytest Прикрепленное изображение Docker запускает тестовое приложение на localhost:8080 с секретным ключом TEST_SECRET . Запустить это с:
docker-compose build && docker-compose up