FastapiのAPIキーベースの認証パッケージ、シンプルさと使いやすさに焦点を当てています。
sqliteまたはpostgresデータベースバックエンドを使用したAPIキーセキュリティ、ヘッダーパラメーターとクエリパラメーターの両方で動作します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を起動し、環境変数を介してそれを提供しなかった場合、自動的に生成されたシークレットキーのログを確認してください。

APIの/docsに移動し、 Authorize/Secret headerボックスのこの秘密の鍵を通知します。すべての管理者のエンドポイントは、ヘッダーセキュリティのみをサポートして、URLを共有するときに秘密キーが不注意に共有されないことを確認します。

次に、 /auth/newを使用して、新しいAPIキーを生成できます。

最後に、このAPIキーを使用して、セキュアエンドポイントにアクセスできます。

もちろん、 requestsとエンドポイントを直接照会して、Pythonを介してAPIキーの取得を自動化できます。
そうする場合は、環境変数FASTAPI_AUTH_HIDE_DOCSを使用して、APIドキュメントからエンドポイントを非表示にすることができます。
環境変数:
FASTAPI_AUTH_SECRET :Secret Administrator Key
FASTAPI_AUTH_HIDE_DOCS :ドキュメントからAPIキー関連のエンドポイントを非表示にするかどうか
FASTAPI_AUTH_DB_LOCATION :ローカルSQLiteデータベースファイルの場所
sqlite.dbは、デフォルトで実行中のディレクトリのdbFASTAPI_AUTH_AUTOMATIC_EXPIRATION :APIキーが期限切れになっているとみなされるまで、日数
DATABASE_MODE : postgresに設定されている場合、パッケージはsqliteの代わりにpostgresデータベースを使用します
URI :Postgresデータベースの場所
postgresql://postgres:postgres@localhost:5432/postgresデフォルトでDEV_MODEがFalseに設定されている場合にのみ使用されます詳細については、 CONTIBUTING.md参照してください。
poetry install
poetry shellpre-commit installpytest添付のDockerイメージは、Secret Key TEST_SECRETを使用してlocalhost:8080でテストアプリを実行します。で実行します:
docker-compose build && docker-compose up