您可以配置Chroma在服务器/客户端模式下使用认证。
支持的认证方法:
| 认证方法 | 基本认证(预先) | 静态API令牌 |
|---|---|---|
| 描述 | RFC 7617 基本认证,使用user:password的base64编码Authorization头。 | 静态认证令牌在Authorization: Bearer <token>或X-Chroma-Token: <token>头中。 |
| 状态 | Alpha | Alpha |
| 服务器端支持 | ✅ Alpha | ✅ Alpha |
| 客户端/Python | ✅ Alpha | ✅ Alpha |
| 客户端/JS | ✅ Alpha | ✅ Alpha |
在本指南中,我们将为本地运行的简单Chroma服务器添加认证,使用我们的CLI:
我们还有针对各种部署的专用认证指南:
加密的用户:密码认证#
服务器设置#
生成服务器端凭证#
要生成密码哈希,请运行以下命令(您可能需要安装httpasswd):
这将为密码admin创建bcrypt密码哈希,为用户admin,并将其放入当前工作目录中的server.htpasswd。它将看起来像admin:<密码哈希>。
运行服务器#
设置以下环境变量:
并运行Chroma服务器:
客户端设置#
我们将使用Chroma的Settings对象在客户端定义认证方法。
我们建议设置环境变量CHROMA_CLIENT_AUTH_CREDENTIALS,而不是在代码中指定凭证。
静态API令牌认证#
服务器设置#
安全说明
当前静态API令牌认证的实现仅支持基于ENV的令牌。令牌必须是字母数字的ASCII字符串。令牌区分大小写。
例如,如果您希望静态API令牌为“test-token”,请设置以下环境变量。这将设置Authorization: Bearer test-token作为您的认证头。
要使用 X-Chroma-Token: test-token 类型的身份验证头,您可以设置 CHROMA_AUTH_TOKEN_TRANSPORT_HEADER 环境变量:
然后,运行 Chroma 服务器:
要配置多个令牌并将其用于基于角色的访问控制(RBAC),请使用类似 此文件 的文件和以下环境变量:
客户端设置#
我们将使用 Chroma 的 Settings 对象在客户端上定义身份验证方法。
如果您使用自定义的 CHROMA_AUTH_TOKEN_TRANSPORT_HEADER(如 X-Chroma-Token),请将其添加到您的 Settings 中:
我们建议设置环境变量 CHROMA_CLIENT_AUTH_CREDENTIALS 而不是在代码中指定令牌。同样,您可以在客户端构造中读取 CHROMA_AUTH_TOKEN_TRANSPORT_HEADER 的值。