v1auth 上下文
会话提权
POST /v1/auth/elevation 与 /elevation/complete:两段式的近期认证(RFC 9470)。
提权是「在现有会话内证明此刻是本人」,用于满足破坏性操作的 max_age 要求。它与重新登录的区别在于:会话不变,只把这条会话的认证时刻推到当下。
端点
| 方法 | 路径 | 凭证 | 说明 |
|---|---|---|---|
POST | /v1/auth/elevation | 会话令牌 | 起流程,返回流程令牌与可用方式 |
POST | /v1/auth/elevation/complete | 流程令牌(JWE) | 收流程,重签访问令牌 |
第一步:起流程
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
acr_values | string | 可选 | 目标强度,多个值取最高的一档 |
{
"success": true,
"flow_token": "eyJ...",
"required_acr": "urn:muoceon:acr:aal2",
"available_methods": [
{ "type": "passkey", "remaining": 1 },
{ "type": "authenticator", "remaining": 1 }
]
}required_acr 是本次的目标等级,available_methods 是这个账号当前可用的验证方式。
第一步不要求提权
它本身就是提权的入口。若再要求一次近期认证,用户会陷入「要提权得先提权」的死循环。
中间步骤
用返回的 flow_token 走 验证挑战 里的 /verify/*,每一步都会换回新的流程令牌。
第二步:收流程
Bearer 位置放流程令牌(不是会话令牌),无请求体。
{
"success": true,
"access_token": "eyJ...",
"token_type": "Bearer",
"expires_in": 900,
"acr": "urn:muoceon:acr:aal2",
"auth_time": "2026-11-14T09:02:41.000Z"
}| 结果 | 说明 |
|---|---|
| 达标 | 会话 auth_time 推到当下,重签访问令牌;刷新令牌不轮换 |
| 未达标 | 返回 401 并带 RFC 9470 的 WWW-Authenticate 挑战,流程令牌仍然有效,可换更强的方式重试 |
典型用法
- 调某个破坏性端点,收到
401+WWW-Authenticate; - 调
POST /elevation,按available_methods渲染验证界面; - 完成验证挑战后调
/elevation/complete; - 用新拿到的访问令牌重放原请求。
相关
- 哪些端点要求提权:auth 上下文总览
- 提权的设计背景:近期认证