Auth 对象和资源级访问控制,但将身份验证升级为使用 Supabase 作为您的身份提供者。虽然本教程使用 Supabase,但这些概念适用于任何 OAuth2 提供者。您将学习如何:
- 用真实的 JWT 令牌替换测试令牌
- 与 OAuth2 提供者集成以实现安全的用户身份验证
- 处理用户会话和元数据,同时保持我们现有的授权逻辑
背景
OAuth2 涉及三个主要角色:- 授权服务器:处理用户身份验证并颁发令牌的身份提供者(例如 Supabase、Auth0、Google)
- 应用后端:您的 LangGraph 应用程序。它验证令牌并提供受保护的资源(对话数据)
- 客户端应用程序:用户与您的服务进行交互的 Web 或移动应用程序
先决条件
在开始本教程之前,请确保您已具备:- 第二个教程中的机器人正在无错误地运行。
- 一个 Supabase 项目以使用其身份验证服务器。
1. 安装依赖项
安装所需的依赖项。从您的custom-auth 目录开始,并确保您已安装 langgraph-cli:
2. 设置身份验证提供者
接下来,获取您的身份验证服务器的 URL 和用于身份验证的私钥。 由于您在此使用 Supabase,您可以在 Supabase 仪表板中完成此操作:- 在左侧边栏中,点击“⚙ 项目设置”,然后点击“API”
- 复制您的项目 URL 并将其添加到您的
.env文件中
- 复制您的服务角色密钥并将其添加到您的
.env文件中:
- 复制您的“anon public”密钥并记下它。这将在您设置客户端代码时使用。
3. 实现令牌验证
在之前的教程中,您使用了Auth 对象来验证硬编码的令牌并添加资源所有权。
现在,您将升级身份验证以验证来自 Supabase 的真实 JWT 令牌。主要更改都将位于 @auth.authenticate 装饰器函数中:
- 您将不再检查硬编码的令牌列表,而是向 Supabase 发送 HTTP 请求以验证令牌。
- 您将从已验证的令牌中提取真实的用户信息(ID、电子邮件)。
- 现有的资源授权逻辑保持不变。
src/security/auth.py 以实现此功能:
src/security/auth.py
4. 测试身份验证流程
让我们测试新的身份验证流程。您可以在文件或笔记本中运行以下代码。您需要提供:/login 请求。
现在测试用户是否只能看到自己的数据。在继续之前,请确保服务器正在运行(运行 langgraph dev)。以下代码片段需要您在设置身份验证提供者时从 Supabase 仪表板复制的“anon public”密钥。
- 用户必须登录才能访问机器人
- 每个用户只能看到自己的线程
后续步骤
您已成功为 LangGraph 应用程序构建了一个生产就绪的身份验证系统!让我们回顾一下您所完成的工作:- 设置了一个身份验证提供者(本例中为 Supabase)
- 添加了具有电子邮件/密码身份验证的真实用户账户
- 将 JWT 令牌验证集成到您的代理服务器中
- 实现了适当的授权,确保用户只能访问自己的数据
- 创建了一个基础,准备好应对您下一个身份验证挑战
- 使用您喜欢的框架构建 Web UI(参见 Custom Auth 模板获取示例)
- 在身份验证概念指南中了解更多关于身份验证和授权的其他方面。
- 阅读参考文档后,进一步自定义您的处理程序和设置。
将这些文档通过 MCP 连接到 Claude、VSCode 等,以获取实时答案。

