跳到内容

安全性

API 服务的默认实现通过 HTTP 运行,并且是完全开放的。如果服务作为原型在内部网络上运行,这可能没问题。在大多数场景下,连接至少应该加密。授权是另一个内置功能,要求每个请求提供有效的 API 令牌。详情请参见下方。

HTTPS

默认的 API 服务命令在端口 8000 上启动一个 Uvicorn 服务器作为 HTTP 服务。要运行 HTTPS 服务,请考虑以下选项。

  • TLS 代理服务器推荐选项。在此配置下,txtai API 服务作为 HTTP 服务运行,仅可通过 localhost/本地网络访问。代理服务器处理所有加密并将请求重定向到本地服务。请参阅此示例配置了解更多。

  • Uvicorn SSL 证书。另一种选择是在 Uvicorn 服务上设置 SSL 证书。这适用于简单情况,但在托管多个 txtai 或其他相关服务时会变得复杂。

授权

授权要求每个 API 请求都提供一个有效的 API 令牌。该令牌作为 HTTP Authorization 头发送。

服务器

CONFIG=config.yml TOKEN=<sha256 encoded token> 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。否则,令牌将以明文形式交换。

身份验证和授权可以完全自定义。请参阅依赖项部分了解更多。