智能体身份验证
智能体身份验证
了解如何保护对话式智能体的访问安全
概述
构建对话式智能体时,可能需要限制特定智能体或对话的访问权限。ElevenLabs 提供多种身份验证机制,确保只有获得授权的用户才能与智能体互动。
身份验证方法
ElevenLabs 提供两种主要方法来保护对话式智能体:
使用签名 URL
对于客户端应用,建议使用签名 URL。该方法可在不暴露 API 密钥的情况下验证用户身份。
以下指南使用 JS 客户端 和 Python SDK。
签名 URL 的工作原理
- 服务器使用 API 密钥向 ElevenLabs 请求签名 URL。
- ElevenLabs 生成临时令牌并返回签名 WebSocket URL。
- 客户端应用使用该签名 URL 建立 WebSocket 连接。
- 签名 URL 会在 15 分钟后过期。
通过 API 生成签名 URL
要获取签名 URL,请使用智能体 ID 向 get_signed_url 端点发起请求:
curl 响应格式如下:
使用签名 URL 连接智能体
从客户端获取服务器生成的签名 URL,并使用该 URL 连接到 WebSocket。
签名 URL 过期
签名 URL 的有效期为 15 分钟。对话会话可以持续更久,但必须在 15 分钟内发起对话。
使用允许列表
允许列表可根据来源域名限制对话式智能体的访问权限,确保只有来自已批准域名的请求才能连接到智能体。
允许列表的工作原理
- 为智能体配置已批准主机名列表。
- 客户端尝试连接时,ElevenLabs 会检查请求来源是否与允许的主机名匹配。
- 如果来源位于允许列表中,则允许连接;否则将被拒绝。
配置允许列表
允许列表是智能体身份验证设置的一部分。最多可指定 10 个唯一主机名连接到智能体。
示例:设置允许列表
通过控制台配置
通过 CLI 配置
通过 API 配置
在控制台中打开智能体,进入 安全 选项卡。将每个已批准的主机名(例如 example.com、app.example.com、localhost:3000)添加到允许列表。
选择身份验证方法
每个智能体配置一种身份验证方法:
- 对经过身份验证的客户端会话使用签名 URL(
enable_auth)。 - 对基于主机名的访问控制使用允许列表(
allowlist)。
不要在同一智能体上同时配置签名 URL 和允许列表。请选择与部署模式相符的方法。
示例:仅使用签名 URL
使用不含 allowlist 的 enable_auth:
示例:仅使用允许列表
使用 allowlist,不启用签名 URL:
常见问题
可以让多个用户使用同一个签名 URL 吗?
可以,但建议为每个用户会话生成新的签名 URL。
如果签名 URL 在对话过程中失效,会怎样?
如果签名 URL 过期(15 分钟后),使用该签名 URL 创建的任何 WebSocket 连接都不会关闭,但尝试使用该签名 URL 创建新连接会失败。
可以限制特定用户访问吗?
签名 URL 机制仅验证请求是否来自授权来源。要限制特定用户访问,请在请求签名 URL 前,在应用中实现用户身份验证。
可生成的签名 URL 数量有限制吗?
可生成的签名 URL 数量没有具体限制。
允许列表如何处理子域名?
允许列表会精确匹配主机名。如果希望同时允许某个域名及其子域名,需要分别添加每一个(例如 “example.com” 和 “app.example.com”)。
需要同时使用两种身份验证方法吗?
不需要。为每个智能体配置签名 URL 或允许列表之一即可。对于客户端应用,建议默认使用签名 URL。
还应实施哪些安全措施?
除签名 URL 和允许列表外,还可以考虑实施:
- 请求签名 URL 前进行用户身份验证
- 对 API 请求实施速率限制
- 监控是否存在可疑的使用模式
- 妥善处理身份验证失败的错误