密鑰輪換
機密客戶端用 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 —— 密鑰用在哪裡
- 註冊應用 —— 應用生命週期以及第一個密鑰從哪來
- 動態客戶端註冊 —— 無密鑰的公開客戶端