关于 convex-auth
为 Convex 应用实现身份验证与授权模式的技能,面向构建 Convex 后端的开发者。内容涵盖 OIDC 提供商集成、内置 Convex Auth,以及服务器函数中的身份校验和访问控制。
主要功能
- 01支持 Clerk、Auth0、WorkOS 和自定义 OIDC
- 02提供内置 Convex Auth 方法说明
- 03在服务器函数中读取身份声明
- 04建议公开函数实施行级授权
- 05说明 Webhook 签名验证与密钥管理
适用场景
- 01将 OIDC 身份验证接入 Convex
- 02使用 Magic Links、OTP、OAuth 或密码登录
- 03依据用户身份限制记录访问
- 04通过 Webhook 同步身份提供商用户
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ igorwarzocha/ opencode-workflows --skill convex-auth安装后在 Claude Code 中输入/convex-auth确认已加载。
详细介绍
使用 OIDC 提供商(Clerk、Auth0、WorkOS)或内置的 Convex Auth 库,实现 Convex 身份验证与授权模式。
- **身份验证概览**:https://docs.convex.dev/auth
- **Convex Auth(beta)**:https://docs.convex.dev/auth/convex-auth
- **身份验证方法**:https://labs.convex.dev/auth
- **Clerk 集成**:https://docs.convex.dev/auth/clerk
- **WorkOS 集成**:https://docs.convex.dev/auth/authkit/
- Convex 使用 OpenID Connect JWT。
- 集成:Clerk、WorkOS AuthKit、Auth0;也支持自定义 OIDC。
- Convex Auth(Beta):内置库(labs.convex.dev),支持 Magic Links、OTP、OAuth 和密码,无需外部服务。
- 身份:通过服务器函数中的 `ctx.auth.getUserIdentity()` 获取。
- 授权:按每个公共函数强制执行;敏感逻辑必须使用内部函数。
身份验证操作
- 在函数中:
ctx.auth.getUserIdentity()会返回tokenIdentifier、subject、issuer以及提供商声明。 - 自定义 JWT 身份验证可能会以
identity["properties.email"]这样的路径公开声明。 - 用户存储模式:
- 通过客户端 mutation 从 JWT 中存储用户,或通过提供商 webhook 执行用户 upsert。
- 索引查询应使用
by_token/byExternalId。
- Webhook:必须通过 HTTP actions 实现,并使用提供商 SDK 验证签名;签名密钥必须存储在环境变量中。
Convex Auth(Beta)特定说明
- 支持的方法:
- Magic Links 和 OTP:基于电子邮件的链接或验证码。
- OAuth:GitHub、Google、Apple 等。
- 密码:支持重置流程和可选的电子邮件验证。
- 组件:不提供 UI 组件;必须使用库 hooks 在 React 中自行构建。
- Next.js:SSR/Middleware 支持仍处于实验或 beta 阶段。
服务器函数模式
- 必须通过
ctx.auth.getUserIdentity()读取身份。 - 必须在每个公共函数中强制执行行级授权。
- 不应通过公共函数公开敏感逻辑;应优先使用内部函数。
服务间访问
- 如果没有可用的用户 JWT,应使用共享密钥模式。
- 必须将密钥存储在部署环境变量中;不得硬编码。
客户端指南
- 必须遵循提供商的快速入门指南;不得自行编造流程。
- 不应在客户端专用代码中依赖身份验证数据,而不进行服务器端验证。
评论
支持 Markdown