安全
API服务的默认实现通过HTTP运行,完全开放。如果该服务作为内部网络上的原型运行,这可能是可以接受的。在大多数情况下,连接至少应该是加密的。授权是另一个内置功能,要求每个请求都包含有效的API令牌。更多信息请参见下文。
HTTPS
默认的API服务命令在端口8000上启动一个Uvicorn服务器作为HTTP服务。要运行HTTPS服务,请考虑以下选项。
-
TLS代理服务器。推荐选择。在此配置中,txtai API服务作为仅在本地主机/本地网络上可访问的HTTP服务运行。代理服务器处理所有加密并将请求重定向到本地服务。更多信息请参见此示例配置。
-
Uvicorn SSL证书。另一个选项是在Uvicorn服务上设置SSL证书。这在简单情况下有效,但在托管多个txtai或其他相关服务时会变得复杂。
授权
授权要求每个API请求都包含有效的API令牌。此令牌作为HTTP Authorization
头发送。
服务器
CONFIG=config.yml TOKEN=<sha256编码的令牌> uvicorn "txtai.api:app"
客户端
curl \
-X POST "http://localhost:8000/workflow" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"name":"sumfrench", "elements": ["https://github.com/neuml/txtai"]}'
需要注意的是,必须使用上述方法之一启用HTTPS。否则,令牌将以明文形式交换。
身份验证和授权可以完全自定义。更多信息请参见依赖项部分。