繁體中文(香港)
  • 事後分析

事後分析:由於 JWKS 緩存與簽名金鑰輪換導致的認證失敗

2026 年 1 月 8 日 (PST) 認證事件的事後分析。

Gao
Gao
Founder

Stop wasting weeks on user auth
Launch secure apps faster with Logto. Integrate user auth in minutes, and focus on your core product.
Get started
Product screenshot

**日期:**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,請嘗試:

  • 開啟無痕/私密瀏覽視窗,或
  • 清除/停用你的瀏覽器緩存,然後再重試

事件經過

  1. 我們為客戶租戶網域(*.logto.app)更新了 JWKS 緩存設置。但 JWKS 緩存意外仍啟用於雲端網域(*.logto.io)。
  2. 我們輪換了雲端服務的簽名金鑰。因 *.logto.io 的 JWKS 回應被緩存,部分客戶端繼續使用過期的 JWKS,導致無法驗證新簽發的 Token。
  3. 我們為 *.logto.io 清除了 JWKS 緩存,將簽名金鑰恢復至先前版本,再次清除 JWKS 緩存,確保所有客戶端都獲取到還原後的金鑰組。
  4. 認證功能恢復。但部分用戶可能由於瀏覽器緩存問題而仍遇到 Console 登入問題。

課堂反思

金鑰輪換不只是金鑰管理任務,而是需要涵蓋從發行方到驗證方,整個流程的相容性調整,要考慮緩存之間的行為。跨網域(如 *.logto.app vs *.logto.io)的組態漂移是潛在風險。只對部分網域安全的變更,若未能一致套用於所有網域,便可能導致系統故障。

我們現有的整合測試並未涵蓋類似生產環境的 JWKS 緩存行為,因此在金鑰輪換前未能測到本次失敗模式。

預防措施

我們會實施:

  • 在簽名金鑰輪換流程中,將 JWKS 緩存失效作為必要程序(只能在失效完成後進行輪換);
  • 保持 JWKS 緩存關閉,直到相關失效流程完成實裝,再為效能重新啟用緩存;
  • 為金鑰輪換新增生產環境相似的整合測試,包括 JWKS 緩存行為及緩存失效檢查。