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文件中
- 复制你的“匿名公共”密钥并记下。这将在稍后设置客户端代码时使用。
3. 实施令牌验证
在之前的教程中,你使用Auth对象验证硬编码令牌并添加资源所有权。 现在,你将升级身份验证以验证来自 Supabase 的真实 JWT 令牌。主要的更改都将在@auth.authenticate装饰函数中:- 你将不再与硬编码的令牌列表进行检查,而是向 Supabase 发送 HTTP 请求来验证令牌。
- 你将从已验证的令牌中提取真实的用户信息(ID、电子邮件)。
- 现有的资源授权逻辑保持不变。
src/security/auth.py 以实现此功能
src/security/auth.py
4. 测试身份验证流程
让我们测试新的身份验证流程。你可以在文件或笔记本中运行以下代码。你需要提供/login 请求。 现在测试用户是否只能看到自己的数据。在继续之前,请确保服务器正在运行(运行 langgraph dev)。以下代码片段需要你之前设置身份验证提供程序时从 Supabase 控制面板复制的“匿名公共”密钥。- 用户必须登录才能访问机器人
- 每个用户只能看到自己的线程
后续步骤
你已成功为你的 LangGraph 应用程序构建了一个生产就绪的身份验证系统!让我们回顾一下你所完成的工作- 设置了一个身份验证提供程序(本例中为 Supabase)
- 添加了使用电子邮件/密码身份验证的真实用户账户
- 将 JWT 令牌验证集成到你的 LangGraph 服务器中
- 实施了适当的授权以确保用户只能访问自己的数据
- 创建了一个基础,可应对你的下一个身份验证挑战 🚀
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。