v1auth 上下文
令牌
用流程令牌换取会话令牌、刷新轮换与登出。
这三个端点签发和回收的是会话令牌,不是 OAuth 资源令牌。它不绑定任何 client_id,受众固定为 auth,因此第三方客户端拿不到也不需要它。
端点
| 方法 | 路径 | 凭证 |
|---|---|---|
POST | /v1/auth/token | 流程令牌(JWE),放在 Bearer |
POST | /v1/auth/token/refresh | 请求体里的刷新令牌 |
POST | /v1/auth/token/revoke | 会话访问令牌,放在 Bearer |
POST /token
流程的收尾步骤。服务端会重新按库中状态校验一遍已完成的验证步骤,再签发令牌——不能因为客户端说「我验证过了」就发。
curl -X POST 'https://id.example.com/v1/auth/token' \
-H "Authorization: Bearer $FLOW_TOKEN"{
"success": true,
"message": "Signed in",
"access_token": "eyJ...",
"refresh_token": "eyJ...",
"token_type": "Bearer",
"expires_in": 900,
"acr": "urn:muoceon:acr:aal1",
"auth_time": "2026-11-14T08:31:12.000Z"
}| 字段 | 说明 |
|---|---|
access_token | 会话访问令牌,有效期 15 分钟 |
refresh_token | 刷新令牌,有效期 30 天 |
acr | 本次认证的强度等级;提权判断以它为准 |
auth_time | 本次身份验证发生的时刻,max_age 提权据此计算 |
POST /token/refresh
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
refresh_token | string | ✅ | 上一次拿到的刷新令牌 |
返回与 POST /token 相同的令牌对形状。
刷新即轮换
每次刷新都会签发新的访问令牌与新的刷新令牌,旧刷新令牌立即失效。客户端必须用新值覆盖存储,不能保留旧值做「兜底重试」——那只会换来一次 401。
POST /token/revoke
登出当前会话。请求体为空,Bearer 位置放会话访问令牌。
{ "success": true, "message": "Signed out" }服务端会删除该会话记录及其刷新令牌,之后用同一枚访问令牌发起的请求一律被拒。