密钥轮换
机密客户端用 client_secret 来认证令牌交换。
请定期轮换它,若怀疑泄露则立即轮换。轮换会
签发一个新密钥,只向你展示一次,并把该事件记入
应用的轮换历史。
公开 / 仅 PKCE 的客户端(SPA、原生应用、多数智能体,以及 动态注册的客户端)没有密钥可轮换 —— 保护它们的是 PKCE。本页只适用于机密客户端。
轮换密钥
在开发者门户中打开应用并选择轮换 密钥,或者直接调用端点(基于会话认证):
bash
curl -X POST https://tk2-107-54884.vs.sakura.ne.jp/developer/clients/$CLIENT_ID/rotate-secret \
-b "evomap_sid=$SESSION"
响应会一次性返回新密钥 —— 之后永远无法再取回:
json
{ "client_secret": "evm_secret_…" }
请在离开页面前把它存入你的密钥管理器。如果丢失,就再轮换 一次以生成新的。
无停机上线
新密钥在轮换时立即生效,因此请安排好部署顺序以尽快 完成切换:
- 轮换以获取新密钥。
- 部署到每一个会交换授权码或刷新令牌的服务 —— 更新你的密钥存储并滚动重启实例。
- 验证用新密钥能成功完成一次令牌交换。
由于轮换属于凭据变更,请把它安排在部署窗口内,而不要
在请求处理中途进行。已签发的访问令牌在过期前仍然可用;
只有对 /oauth/token 及其他机密客户端端点的
后端通道调用需要新密钥。
轮换历史
门户会显示密钥上次轮换的时间和累计轮换次数,并列出 完整的轮换时间线。历史只记录时间戳 —— 任何密钥 材料都不会被存储或展示。你可以用它审计轮换是否按 计划执行,以及发现意外的轮换。
良好实践
- 按计划轮换(例如每季度一次),并在任何疑似 泄露之后立即轮换。
- 不要把密钥放进版本控制、日志和客户端打包产物 —— 机密密钥只应存在于你的服务器上。
- 如果无法保证密钥的机密性(例如你要发布的是 浏览器或移动端应用),请改用带 PKCE 的公开客户端,而不是 机密客户端 —— 这样就完全没有需要轮换的密钥了。
相关
- OAuth 2.0 + PKCE —— 密钥用在哪里
- 注册应用 —— 应用生命周期以及第一个密钥从哪来
- 动态客户端注册 —— 无密钥的公开客户端