认证¶
toolregistry-server 提供内置的 Bearer 令牌认证,用于保护 OpenAPI 端点。
概述¶
认证模块通过 FastAPI 的依赖注入系统使用 HTTP Bearer 令牌认证。它支持:
- 多令牌
- 运行时令牌管理(添加/移除令牌)
- 动态启用/禁用,无需重启服务器
设置认证¶
通过代码¶
from toolregistry import ToolRegistry
from toolregistry_server import RouteTable
from toolregistry_server.openapi import create_openapi_app
from toolregistry_server.auth import BearerTokenAuth, create_bearer_dependency
# 设置注册表和路由表
registry = ToolRegistry()
route_table = RouteTable(registry)
# 创建带令牌的认证
auth = BearerTokenAuth(tokens=["my-secret-token", "another-token"])
bearer_dep = create_bearer_dependency(auth)
# 创建带认证的应用
app = create_openapi_app(route_table, dependencies=[bearer_dep])
通过命令行¶
# 单个令牌
toolregistry-server openapi --config config.json --auth-token "your-secret-token"
# 令牌文件(每行一个令牌)
toolregistry-server openapi --config config.json --auth-tokens-file tokens.txt
令牌文件格式:
发送认证请求¶
在 Authorization 头中包含 Bearer 令牌:
curl -X POST http://localhost:8000/calculator/evaluate \
-H "Authorization: Bearer my-secret-token" \
-H "Content-Type: application/json" \
-d '{"expression": "2 + 3"}'
运行时令牌管理¶
BearerTokenAuth 类支持运行时令牌管理:
auth = BearerTokenAuth(tokens=["initial-token"])
# 添加新令牌
auth.add_token("new-token")
# 移除令牌
auth.remove_token("initial-token")
# 完全禁用认证
auth.enabled = False
# 重新启用
auth.enabled = True
未认证请求¶
当认证启用时,没有有效令牌的请求会收到 401 Unauthorized 响应:
如果没有配置令牌,认证会自动禁用,所有请求都被允许。