面向FastAPI的基于密钥的安全包,注重使用的简单性
fastapi-simple-securit的Python项目详细描述
FastAPI简单安全
针对FastAPI的基于密钥的安全包,注重使用的简单性:
- 全功能开箱即用,无需配置
- 本地
sqlite
后端的API密钥安全性,同时使用头和查询参数 - 通过管理员端点自动创建、撤消、弃用和使用日志
- 没有依赖关系,只需要
FastAPI
和python标准库
安装
pip install fastapi_simple_security
使用
创建应用程序
fromfastapi_simple_securityimportapi_key_router,api_key_securityfromfastapiimportDepends,FastAPIapp=FastAPI()app.include_router(api_key_router,prefix="/auth",tags=["_auth"])@app.get("/secure",dependencies=[Depends(api_key_security)])asyncdefsecure_endpoint():return{"message":"This is a secure endpoint"}
产生的应用程序是:
通过文档创建API密钥
启动API并检查日志中是否有自动生成的密钥(如果您没有通过提供密钥) 环境变量。在
转到API上的/docs
,并在Authorize/Secret header
框中通知此密钥。
所有管理员终结点都只支持头安全性,以确保密钥不会被无意中泄露
共享URL时共享。在
然后,可以使用/auth/new
生成一个新的API密钥。在
最后,您可以使用这个API密钥来访问安全端点。在
python中API密钥的创建
当然,您可以使用requests
通过python自动获取API密钥,并直接查询端点。在
如果这样做,可以使用环境变量从API文档中隐藏端点
FASTAPI_SIMPLE_SECURITY_HIDE_DOCS
。在
配置
环境变量:
FASTAPI_SIMPLE_SECURITY_SECRET
:密钥管理员密钥- 如果未提供,则在服务器启动时自动生成
- 允许生成新的API密钥、撤消现有的API密钥以及API密钥使用情况视图
- 它被泄露会损害API的安全性
FASTAPI_SIMPLE_SECURITY_HIDE_DOCS
:是否从文档中隐藏与API键相关的端点FASTAPI_SIMPLE_SECURITY_DB_LOCATION
:本地sqlite数据库文件的位置- /应用程序/sqlite.数据库默认情况下
- 在Docker内部运行应用程序时,使用绑定挂载来实现持久性。在
FAST_API_SIMPLE_SECURITY_AUTOMATIC_EXPIRATION
:API密钥被视为过期之前的持续时间(以天为单位)- 默认15天
贡献
运行开发环境
附加的docker映像使用密钥TEST_SECRET
在localhost:8080
上运行一个测试应用程序。运行时使用:
所需捐款
- 单元测试
- 更多合理违约的选择
- 每个API密钥的日志记录?在
- 更多API密钥存储的后端选项?在
- 项目
标签: