身份客户端与设备会话
# 身份客户端与设备会话
schema v20 增加客户端注册表。平台运营可以配置登录应用的身份域、终端、登录方式、凭证期限和同应用会话上限;租户账号不能维护这份全局配置。当前可实际认证的是平台、租户后台、schema v21的会员浏览器口令客户端与v22独立服务凭据。后续已接入三域Web/原生OIDC与认证模式;登记仍不会自动创建账号或凭据,操作见浏览器SSO和原生客户端。
# 配置登录应用
先用当前版本 CLI 显式迁移,再启动 API 和前端。平台账号进入“身份客户端”,需要 platform:identity-client:read;新增与编辑另需 platform:identity-client:write。平台管理员的种子权限由迁移发布;只读运营只能查看,没有新增或编辑按钮。
新增时填写名称、应用标识和身份域。标识以小写字母开头,只包含小写字母、数字和连字符,最多 64 字符。身份域与标识共同定位配置,创建后不能修改。平台、租户、会员与服务身份的受众和主体类型由服务端固定,不能在表单改成其他身份。
| 配置 | 范围与行为 |
|---|---|
| 访问凭证最长有效期 | 60–3600 秒 |
| 会话最长有效期 | 300–2592000 秒 |
| 刷新凭证最长有效期 | 60–604800 秒 |
| 同应用会话上限 | 0 表示兼容原有不限数量;1 表示仅保留最新一次登录;2–100 保留相应数量 |
| 启用 | 停用后拒绝新登录及原有会话,重新启用不会恢复旧会话 |
访问及刷新期限不能超过会话期限。上述值是上限,最终期限同时受 API 进程配置、租户安全策略及必须改密限制约束。例如应用访问上限 60 秒,即使进程默认为 15 分钟,实际签发也不超过 60 秒。
保存配置会推进版本,该应用已有会话随即失效,名称修改也按同一规则处理。版本冲突返回 409001,刷新列表并重新打开编辑器后再判断,不自动覆盖。写入与平台审计在同一事务提交,审计失败时配置和版本一起回滚。审计只记录身份域、应用标识和版本,不记录名称、凭证或请求体。
# 登录与会话管理
口令登录仍走各自的 /api/admin/v1/auth/login 或 /api/platform/v1/auth/login,clientId 必须是同一身份域中启用的浏览器口令应用。默认 Vben 使用 admin-web 和 platform-web。其他应用若使用该入口,也必须先登记;原生授权码或服务凭证配置不能借用口令入口。
登录可选提交 deviceId、deviceLabel。设备标识在持久化前散列,标签仅作展示;两者均不作为可信认证因素,也不能通过相同标识绕过会话上限。原始设备标识及其摘要不返回到会话列表。
工作台“本人的会话”显示设备标签、终端、创建时间与当前会话。撤销指定会话只影响本人同身份域、同租户的目标;“退出所有设备”会撤销该主体在所有应用下的会话,成功后清除当前 Cookie 和本地状态并回到登录页。另一个身份域或租户的同名账号不受影响。服务端撤销未确认时,页面明确提示,不能把本地退出当成服务端全部成功。
| 接口 | 用途 |
|---|---|
GET /api/platform/v1/identity/clients | 按身份域和分页查看注册表 |
POST /api/platform/v1/identity/clients | 创建新配置,版本为 0 或省略 |
PUT /api/platform/v1/identity/clients/{realm}/{clientId} | 使用当前版本更新,正文定位键必须与路径一致 |
GET /api/{admin或platform}/v1/auth/sessions | 查看本人会话 |
DELETE /api/{admin或platform}/v1/auth/sessions/{id} | 撤销本人指定会话 |
DELETE /api/{admin或platform}/v1/auth/sessions | 撤销本人当前身份域的全部应用会话 |
写接口继续要求可信 Origin、对应 X-App-Request 和 JSON;生产经过统一 JWE 内容链路。未知筛选、重复参数、跨身份域 token、缺失权限及失效会话均拒绝。
# 当前边界
注册表已预留会员与服务身份域,以及授权码、服务凭证元数据;v21已接入独立会员口令认证与管理。v22已接入服务账号与scope,无浏览器refresh;原生授权码、重定向白名单、provider绑定及统一IdP登出仍未接入,注册记录不能据此开通这些认证。
双库浏览器与事务专项记录见 M5 实施记录。原有 Cookie、刷新重放与必须改密规则见 登录与会话。
OIDC提供方现在可引用已登记的 authorization_code 客户端;配置与绑定规则见 OIDC提供方与外部绑定。授权回调、原生 PKCE 和本地 SSO 会话仍待接入。
撤销本人全部设备会话:
DELETE /api/admin/v1/auth/sessions
Origin: http://127.0.0.1:5174
X-App-Request: admin
Authorization: Bearer <access>
Content-Type: application/json
{}