繁體中文(香港)
事後分析:由於 JWKS 緩存與簽名金鑰輪換導致的認證失敗
2026 年 1 月 8 日 (PST) 認證事件的事後分析。
**日期:**2026 年 1 月 8 日 (PST)
**持續時間:**約 60 分鐘
**影響:**部分生產租戶出現登入和 Token 驗證失敗;Console 登入可能受影響
摘要
由於我們 *.logto.io 網域的 JWKS 緩存和輪換簽名金鑰不一致,導致 Token 驗證失敗。我們清除了 JWKS 緩存,並將簽名金鑰恢復到先前版本,服務因此得以恢復。
部分用戶可能因為瀏覽器緩存而仍然遇到 Console 登入問題。對於造成的不便,我們感到十分抱歉。
時間軸 (PST)
- 04:00 PM 事件開始 (認證/Token 驗證錯誤增加)
- 04:35 PM 找到根本原因(JWKS 已緩存且簽名金鑰已輪換)
- 04:41 PM 清除緩存
- 04:49 PM 還原簽名金鑰
- 05:00 PM 服務恢復;持續監控中
事件詳情
影響
在事件期間,部分用戶無法登入且部分 Token 驗證失敗。這影響到多個生產租戶,同時也可能阻止進入 Logto Console。
我們沒有發現與本事件相關的未經授權訪問;影響僅限於認證失敗。
用戶行動
如果你仍然無法登入 Logto Console,請嘗試:
- 開啟無痕/私密瀏覽視窗,或
- 清除/停用你的瀏覽器緩存,然後再重試
事件經過
- 我們為客戶租戶網域(
*.logto.app)更新了 JWKS 緩存設置。但 JWKS 緩存意外仍啟用於雲端網域(*.logto.io)。 - 我們輪換了雲端服務的簽名金鑰。因
*.logto.io的 JWKS 回應被緩存,部分客戶端繼續使用過期的 JWKS,導致無法驗證新簽發的 Token。 - 我們為
*.logto.io清除了 JWKS 緩存,將簽名金鑰恢復至先前版本,再次清除 JWKS 緩存,確保所有客戶端都獲取到還原後的金鑰組。 - 認證功能恢復。但部分用戶可能由於瀏覽器緩存問題而仍遇到 Console 登入問題。
課堂反思
金鑰輪換不只是金鑰管理任務,而是需要涵蓋從發行方到驗證方,整個流程的相容性調整,要考慮緩存之間的行為。跨網域(如 *.logto.app vs *.logto.io)的組態漂移是潛在風險。只對部分網域安全的變更,若未能一致套用於所有網域,便可能導致系統故障。
我們現有的整合測試並未涵蓋類似生產環境的 JWKS 緩存行為,因此在金鑰輪換前未能測到本次失敗模式。
預防措施
我們會實施:
- 在簽名金鑰輪換流程中,將 JWKS 緩存失效作為必要程序(只能在失效完成後進行輪換);
- 保持 JWKS 緩存關閉,直到相關失效流程完成實裝,再為效能重新啟用緩存;
- 為金鑰輪換新增生產環境相似的整合測試,包括 JWKS 緩存行為及緩存失效檢查。

