v1oauth 上下文
公钥
GET /v1/oauth/jwks:JWKS 公钥集合,允许缓存 5 分钟。
GET {issuer}/jwks 返回签名公钥集合,资源服务器按令牌头里的 kid 取对应公钥做本地验签。
请求
无参数、无认证。
curl 'https://id.example.com/v1/oauth/jwks'响应
{
"keys": [
{
"kty": "EC",
"crv": "P-256",
"kid": "2026-11-01",
"x": "...",
"y": "...",
"use": "sig",
"alg": "ES256"
}
]
}| 字段 | 说明 |
|---|---|
kid | 密钥标识;令牌头里引用它 |
use | 固定为 sig |
alg | 签名算法 |
缓存
响应带 Cache-Control: public, max-age=300。
为什么这里允许缓存
与令牌响应相反:这里的载荷是公钥,不是凭据。每个资源服务器都要按 kid 取公钥,不缓存等于让本端点承担全站的验签开销。
窗口压到 5 分钟,是为了让换钥(新 kid)在上游生效后尽快传播;客户端遇到不认识的 kid 会重新拉取,5 分钟只是兜底。
换钥期间的行为
| 情况 | 处理 |
|---|---|
令牌的 kid 在集合中 | 正常验签 |
令牌的 kid 不在集合中 | 重新拉取一次;仍不存在则视为无效令牌 |
| 集合同时含新旧两把 | 正常,轮换期内两把都有效 |