Skip to main content
在本教程中,我们将构建一个仅允许特定用户访问的聊天机器人。我们将从 LangGraph 模板开始,逐步添加基于令牌的安全机制。最终,你将获得一个能够检查有效令牌后再允许访问的聊天机器人。 这是我们身份验证系列的第 1 部分:
  1. 设置自定义身份验证(你正在阅读) - 控制谁可以访问你的机器人
  2. 使对话私有化 - 让用户拥有私密对话
  3. 连接身份验证提供者 - 添加真实用户账户并使用 OAuth2 进行生产环境验证
本指南假设你对以下概念有基本了解:
自定义身份验证仅适用于 LangSmith SaaS 部署或企业自托管部署。

1. 创建你的应用

使用 LangGraph 入门模板创建一个新的聊天机器人:
该模板为我们提供了一个占位符 LangGraph 应用。通过安装本地依赖项并运行开发服务器来试用它:
服务器将启动并在你的浏览器中打开 Studio
如果你将其托管在公共互联网上,任何人都可以访问它。 无身份验证:开发服务器可公开访问,如果暴露在互联网上,任何人都可以访问机器人。

2. 添加身份验证

现在你有了一个基础的 LangGraph 应用,接下来为其添加身份验证。
在本教程中,你将从一个硬编码的令牌开始作为示例。你将在第三个教程中获得一个“生产就绪”的身份验证方案。
Auth 对象允许你注册一个身份验证函数,LangSmith 部署将在每个请求上运行该函数。此函数接收每个请求并决定接受或拒绝。 创建一个新文件 src/security/auth.py。你的代码将放在这里,用于检查用户是否被允许访问你的机器人:
src/security/auth.py
请注意,你的 Auth.authenticate 处理程序做了两件重要的事情:
  1. 检查请求的 Authorization 头中是否提供了有效令牌
  2. 返回用户的 MinimalUserDict
现在,通过在 langgraph.json 配置中添加以下内容来告诉 LangGraph 使用身份验证:
langgraph.json

3. 测试你的机器人

再次启动服务器以测试所有功能:
如果你没有添加 --no-browser,Studio UI 将在浏览器中打开。默认情况下,即使使用自定义身份验证,我们也允许从 Studio 访问。这使得在 Studio 中开发和测试你的机器人更容易。你可以通过在身份验证配置中设置 disable_studio_auth: true 来移除此替代身份验证选项:

4. 与你的机器人聊天

现在,你应该只能在请求头中提供有效令牌才能访问机器人。然而,在你添加资源授权处理程序之前,用户仍然可以访问彼此的资源。 身份验证网关允许带有有效令牌的请求通过,但尚未应用任何资源级过滤器——因此在下一步添加授权处理程序之前,用户共享可见性。 在文件或笔记本中运行以下代码:
你应该会看到:
  1. 没有有效令牌,我们无法访问机器人
  2. 有了有效令牌,我们可以创建线程并聊天
恭喜!你已经构建了一个只允许“已验证”用户访问的聊天机器人。虽然这个系统(尚未)实现生产就绪的安全方案,但我们已经学习了控制机器人访问的基本机制。在下一个教程中,我们将学习如何为每个用户提供他们自己的私密对话。

后续步骤

现在你可以控制谁访问你的机器人,你可能想要:
  1. 通过前往使对话私有化继续教程,了解资源授权。
  2. 阅读更多关于身份验证概念的内容。
  3. 查看 AuthAuth.authenticateMinimalUserDict 的 API 参考,获取更多身份验证细节。