为CONVEX添加OAUTH2后端验证——以SURIED ZITADEL实例为例
ZITADEL 配置清单(SURIED)
本文件用于在新实例上完整、无误地复现 Zitadel 配置,确保当前 Convex + Vue 前端能正常登录、识别租户与角色。
1. 基本信息
- Zitadel 域名(Authority/Issuer):
https://auth.suried.com - 应用类型:
SPA (Single Page Application) - 授权方式:
OIDC Authorization Code + PKCE
2. Zitadel 控制台设置(必做)
2.1 创建应用
- 进入 Zitadel Console → Project → Applications → Create
- 类型选择 SPA
- 启用 PKCE
- 生成 Client ID(例如:
5347547457453745)
2.2 Redirect URI(必须绝对路径)
必须允许:
http://localhost:5173/auth/callbackhttp://localhost:5173/http://localhost:5173/auth/silent(可选,用于 silent renew)
生产环境要额外加入:
https://<YOUR_DOMAIN>/auth/callbackhttps://<YOUR_DOMAIN>/https://<YOUR_DOMAIN>/auth/silent(可选)
2.3 CORS Allowed Origins
http://localhost:5173https://<YOUR_DOMAIN>
2.4 Token / Claim 配置
确保 ID Token 包含以下字段:
subissaud(包含该 SPA 的 Client ID)- 租户标识 Claim(推荐):
urn:zitadel:iam:org:id
如需角色识别,确保以下任一字段存在:
rolesgroupsurn:zitadel:iam:org:project:rolesurn:zitadel:iam:org:roles
3. Convex 后端环境变量(必须设置)
注意:Convex 后端不会读取前端
.env,必须显式设置。
在 Convex 控制台或使用命令设置:
convex env set ZITADEL_AUTHORITY https://auth.suried.com
convex env set ZITADEL_CLIENT_ID <YOUR_CLIENT_ID>
convex env set ZITADEL_JWKS_URL https://auth.suried.com/oauth/v2/keys
convex env set CONVEX_TENANT_CLAIM urn:zitadel:iam:org:id
# 如有多 aud 且校验失败,可临时打开(仅开发)
convex env set ZITADEL_SKIP_AUD_CHECK true
4. 前端环境变量(.env.local)
VITE_OIDC_AUTHORITY=https://auth.suried.com
VITE_OIDC_CLIENT_ID=<YOUR_CLIENT_ID>
VITE_OIDC_SCOPE="openid profile email"
VITE_OIDC_TENANT_CLAIM=urn:zitadel:iam:org:id
# 可选:覆盖默认回调地址
# VITE_OIDC_REDIRECT_URI=http://localhost:5173/auth/callback
# VITE_OIDC_POST_LOGOUT_REDIRECT_URI=http://localhost:5173/
# VITE_OIDC_SILENT_REDIRECT_URI=http://localhost:5173/auth/silent
5. 验证方式(自检)
登录后在应用里查看:
Has ID Token: trueIssuer (iss):https://auth.suried.comAudience (aud): 包含 Client IDRoles: 可见角色列表
如果报 Unauthorized:
- 先确认
ZITADEL_AUTHORITY与ZITADEL_CLIENT_ID在 Convex 后端已设置 - 确保
aud包含当前 Client ID - 若
aud为数组且包含多个 Client ID,请临时启用ZITADEL_SKIP_AUD_CHECK=true
只要按本文件配置,新的 Zitadel 实例可以完整复现,不会因缺少环境变量或 Claim 导致鉴权失败。