Prism OAuth
Lumen 使用 Prism 完成用户登录。会话保存在 httpOnly Cookie 中(由 KV 提供后端);只要用户授权了 offline_access, Lumen 会在 Prism 访问令牌临近过期时自动刷新。
必要的 Scope
Lumen 在跳转 Prism 时申请以下 OAuth scope:
| Scope | 用途 |
|---|---|
openid | OpenID Connect 身份 |
profile | 显示名、头像 |
email | 账户邮箱 |
teams:read | 团队限制访问(allowed_team_id)使用 |
offline_access | 刷新令牌,长会话所需 |
在 Prism 中创建 OAuth 应用
- 打开 Prism → Connected Apps → Create app。
- 把 Redirect URI 设为
https://<你的域名>/callback。 - 推荐启用 PKCE。如果在 InitPage 中关闭 PKCE,则需要提供 Client Secret。
- 复制 Client ID(以及 Client Secret,如果不使用 PKCE)。
填写 InitPage
| 字段 | 说明 |
|---|---|
| Prism Base URL | 例如 https://prism.siiway.org |
| Client ID | 来自 Prism |
| Use PKCE | 推荐 |
| Client secret | 关闭 PKCE 时必填 |
| Redirect URI | 默认 https://<host>/callback |
| Allowed team ID | 用逗号分隔多个团队 ID,只有这些团队成员可以登录 |
配置以 config:app 为键存储在 KV 中。如果想在 wrangler.jsonc 中通过环境变量 锁定团队限制,可以设置 ALLOWED_TEAM_ID。
重新执行初始化
InitPage 由 KV 中的 init:configured 控制。要重新执行,请删除该键:
sh
bunx wrangler kv key delete --binding=KV init:configured如果只想修改配置(不重建 schema),保持 init:configured = true, 通过 PUT /api/init/config 接口更新即可(开启 allowed_team_id 后只有 团队 owner 可以修改)。