SuperAPI AI 工具集

oauth-flow

通用与其它

查看项目

更新于 10-15 19:49

技能介绍

用途:为 NodeJS-Starter-V1 项目提供 OAuth 2.0 与 OpenID Connect 集成规范,覆盖社交登录、Supabase Auth 外部提供商配置、令牌与会话生命周期管理、多提供商账号关联,以及重定向 URI 安全校验。

主要能力:

  1. 提供商配置:在 apps/web/lib/supabase/auth-config.ts 中定义 Google(scopes: openid email profile,queryParams: access_type=offline、prompt=consent)与 GitHub(scopes: read:user user:email)。
  2. PKCE 授权码流程:通过 supabase.auth.signInWithOAuth 发起登录,redirectTo 指向 /auth/callback;回调路由 apps/web/app/auth/callback/route.ts 用 supabase.auth.exchangeCodeForSession(code) 换取会话。授权码为一次性,交换失败应重定向登录页,不得重试。
  3. 令牌管理:getSession 在过期前 60 秒内调用 refreshSession;通过 onAuthStateChange 监听认证状态。令牌不得存入 localStorage,应使用 httpOnly cookie 或服务端会话。
  4. 账号关联:使用 linkIdentity / unlinkIdentity 支持单用户绑定多个提供商,并防止解绑最后一个身份。
  5. 后端校验:FastAPI 侧用 jose 的 jwt.decode 校验 Supabase JWT(algorithms=["HS256"],audience="authenticated"),提取 sub 后获取或创建本地用户,可配合 rbac-patterns 做权限检查。
  6. 重定向安全:维护 ALLOWED_REDIRECT_HOSTS 白名单,校验 next/redirectTo 参数,允许相对路径但拒绝以 // 开头者。

适用场景:为应用添加 Google/GitHub 社交登录、配置 Supabase Auth 外部提供商、管理 OAuth 令牌刷新与账号关联、校验后端 API 请求中的 Supabase JWT。

限制与边界:不适用于内部认证的 JWT 创建与校验(用现有 auth/jwt.py)、RBAC(用 rbac-patterns)、API 密钥轮换(用 secret-management)、表单 CSRF 防护(用 csrf-protection)。禁止使用隐式流程,禁止在前端硬编码客户端密钥,禁止将令牌写入 URL、日志或客户端存储。

复杂度:高。版本 1.0.0,语言环境 en-AU。具体安装命令与依赖版本暂未提供。