v1auth 上下文
身份断言
POST /v1/auth/assertion:签发 17 秒有效、一次性消费的身份断言,供同意页使用。
POST /v1/auth/assertion 把「当前会话属于谁」压缩成一枚短期断言(JWE),交给授权服务器证明用户身份。它是同意页与 /preauthorize、/authorize 之间的桥梁。
请求
无请求体。Bearer 位置放会话访问令牌。
curl -X POST 'https://id.example.com/v1/auth/assertion' \
-H "Authorization: Bearer $ACCESS_TOKEN"响应
| 字段 | 说明 |
|---|---|
id_assertion | 断言 JWE,有效期 17 秒 |
expires_in | 剩余秒数 |
断言的性质
| 性质 | 说明 |
|---|---|
| 短命 | 17 秒,过期即废,不足以被留存或重放 |
| 一次性 | 被 /preauthorize 或 /authorize 消费后,同一枚断言不能再用 |
| 绑定会话 | 断言内含 sub 与 did,绑定签发它的那条会话 |
| 不绑定客户端 | 断言本身不含 client_id,客户端由授权请求另行提供 |
为什么前端每次点击都要现签
断言寿命只有 17 秒,客户端应在用户点「同意」的那一刻调用本端点,而不是提前签好备用。
/preauthorize 与 /authorize 各自消费各自的断言,因此两次调用需要两枚不同的断言。