حزمة المصادقة القائمة على مفتاح 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" }التطبيق الناتج هو:

ابدأ واجهة برمجة التطبيقات الخاصة بك وتحقق من سجلات المفتاح السري الذي تم إنشاؤه تلقائيًا إذا لم تقم بتقديم واحد من خلال متغيرات البيئة.

انتقل إلى /docs على واجهة برمجة التطبيقات الخاصة بك وإبلاغ هذا المفتاح السري في صندوق 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 في دليل التشغيل افتراضيًا 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 مع Secret Key TEST_SECRET . قم بتشغيله مع:
docker-compose build && docker-compose up