OAuth 2.1 服务器
Supabase Auth 可以作为 OAuth 2.1 和 OpenID Connect (OIDC) 身份提供者。这让其他应用和服务可以把你的 Supabase 项目当作他们的认证提供者,就像“用 Google 登录”或“用 GitHub 登录”一样。
🌐 Supabase Auth can act as an OAuth 2.1 and OpenID Connect (OIDC) identity provider. This allows other applications and services to use your Supabase project as their authentication provider, like "Sign in with Google" or "Sign in with GitHub".
你可以用它来构建“使用[你的应用]登录”的体验,通过模型上下文协议(MCP)认证 AI 代理,利用第三方集成为开发者平台提供动力,或者实现符合标准的企业单点登录(SSO)。
🌐 You can use this to build "Sign in with [Your App]" experiences, authenticate AI agents through the Model Context Protocol (MCP), power developer platforms with third-party integrations, or implement standards-compliant enterprise SSO.
用例 #
🌐 Use cases
有几个原因可能会让你想在你的 Supabase 项目中启用 OAuth 2.1 服务器:
🌐 There are several reasons why you might want to enable OAuth 2.1 Server in your Supabase project:
- 开发者平台和市场:让第三方开发者为你的平台构建集成和应用。合作伙伴可以向他们的用户提供“使用[你的应用]登录”,同时你可以通过行级安全策略控制数据访问。
- 人工智能代理和自动化:验证需要访问用户数据的人工智能代理、LLM 工具和 MCP 服务器。模型上下文协议为人工智能应用提供自动 OAuth 发现和客户端注册。
- 移动和桌面应用:向你自己的移动应用、桌面应用或其他第一方客户端发放 OAuth 令牌。所有令牌都会遵守你现有的行级安全策略,并可与自定义访问令牌钩子配合使用。
- 企业单点登录(SSO):为需要在多项服务之间进行标准化身份联合的企业客户提供 OpenID Connect(OIDC)认证。
概览 #
🌐 Overview
Supabase Auth 使用带 PKCE(代码交换证明)的 OAuth 2.1 授权码流程。当第三方应用想要访问用户数据时:
🌐 Supabase Auth implements the OAuth 2.1 authorization code flow with PKCE (Proof Key for Code Exchange). When a third-party application wants to access user data:
- 该应用会将用户重定向到你的授权端点
- Supabase Auth 会验证请求并重定向到你自定义的授权界面
- 用户进行身份验证(使用你启用的任何认证方法)并批准访问
- Supabase Auth 发出一个授权码
- 应用用代码换取访问令牌和刷新令牌
- 应用使用访问令牌来进行经过身份验证的 API 请求
访问令牌是标准的 Supabase JWT,包含 user_id、role 和 client_id 声明。你现有的行级安全策略会自动应用到 OAuth 令牌,让你可以细粒度控制每个客户端可以访问的内容。
🌐 Access tokens are standard Supabase JWTs that include user_id, role, and client_id claims. Your existing Row Level Security policies automatically apply to OAuth tokens, giving you fine-grained control over what each client can access.
支持的标准 #
🌐 Supported standards
- OAuth 2.1:最新的 OAuth 规范,强制使用 PKCE
- OpenID Connect:ID 令牌(带有
openid范围)、UserInfo 端点,以及 OIDC 发现 - 标准作用域:用于控制数据访问的
openid、email、profile和phone作用域 - 动态客户端注册:适用于 MCP 兼容客户端的自动注册
- JWKS 端点:供第三方验证令牌的公钥
与现有认证集成 #
🌐 Integration with existing auth
OAuth 2.1 服务器可以与你现有的 Supabase Auth 配置无缝配合:
🌐 OAuth 2.1 Server works seamlessly with your existing Supabase Auth configuration:
- 用户可以使用任何启用的方法进行认证(密码、魔法链接、社交账号、多因素认证、手机)
- 自定义访问令牌钩子 适用于 OAuth 令牌,允许你自定义诸如
audience的声明或添加特定客户端权限 - 行级别安全策略通过令牌中的
client_id声明来控制数据访问 - 所有标准的 Supabase 功能(邮件模板、钩子、速率限制)都能继续使用
设置 OAuth 2.1 服务器 #
🌐 Set up OAuth 2.1 server
要在你的项目中启用 OAuth 2.1 服务器,请按照以下指南操作:
🌐 To enable OAuth 2.1 Server in your project, follow these guides:
资源 #
🌐 Resources
- GitHub 讨论 - 分享你的使用案例并帮助制定路线图
- Discord 社区 - 获取帮助并分享你的创作