POST /api/v1/admin/jwt/rotate
生成新的 RSA 密钥对用于 JWT 签发,将超出保留数量的旧密钥停用。已签发的旧令牌在过渡期内仍可通过 kid 匹配到对应公钥进行验证,实现零停机轮换。
请求头
Authorization: Bearer <admin_access_token>
查询参数
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
keepActive |
number |
否 | 取配置值 | 轮换后保留的活跃密钥数量,默认取 app 配置中的值 |
响应
{
"code": 200,
"message": "success",
"data": {
"kid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"activeKeys": 3,
"createdAt": 1747123456789
},
"requestId": "...",
"timestamp": 1747123456789
}
| 字段 | 类型 | 说明 |
|---|---|---|
kid |
string |
新密钥的 Key ID(UUID),嵌入 JWT 头中用于验证时查找公钥 |
activeKeys |
number |
轮换后当前活跃的密钥总数 |
createdAt |
number |
新密钥创建时间(13 位毫秒级 Unix 时间戳) |
错误码
| code | message | 说明 |
|---|---|---|
| 401 | — | 未认证或 Token 过期 |
| 403 | — | 无 ADMIN 权限 |
GET /.well-known/jwks.json
以标准 JWK Set 格式返回所有活跃 JWT 公钥。第三方服务可用此端点获取公钥以验证本服务签发的令牌。
响应
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"n": "...",
"e": "AQAB"
}
]
}
注意:此端点不返回 ApiResponse 包裹结构,直接返回 JWK Set 对象。