日本語
  • 事後分析

事後分析: JWKS キャッシュと署名キーのローテーションによる認証障害

2026 年 1 月 8 日 (PST) の認証インシデントに関する事後分析。

Gao
Gao
Founder

ユーザー認証に何週間も費やすのはもうやめましょう
Logto でより速く安全なアプリをリリース。数分で認証を統合し、コア製品に集中できます。
始めましょう
Product screenshot

日時: 2026 年 1 月 8 日 (PST)

期間: 約 60 分

影響範囲: 一部の本番テナントでサインインやトークン検証が失敗した。Console のサインインにも影響の可能性あり。

概要

ローテーションされた署名キーと *.logto.io ドメインでキャッシュされた JWKS との不一致により、トークン検証が失敗しました。JWKS キャッシュをクリアし、以前の署名キーに戻して復旧しました。

一部のユーザーでは、ブラウザーのキャッシュが原因で Console のサインイン問題が継続する場合があります。この混乱をおかけしたことをお詫びします。

タイムライン (PST)

  • 04:00 PM インシデント発生 (認証・トークン検証エラーの増加)
  • 04:35 PM 根本原因の特定 (署名キーのローテーション中に JWKS がキャッシュされていた)
  • 04:41 PM キャッシュのクリア
  • 04:49 PM 署名キーのロールバック
  • 05:00 PM サービス復旧・監視継続

インシデントの詳細

影響

インシデント発生中、一部ユーザーがサインインできず、一部のトークン検証が失敗しました。これは複数の本番テナントに影響し、Logto Console へのアクセスがブロックされる場合もありました。

本件による不正アクセスの証拠は確認されておらず、影響は認証失敗のみに限定されていました。

お客様へのご対応

Logto Console にまだサインインできない場合は、お手数ですが以下の方法をお試しください:

  • シークレット/プライベートウインドウで開く
  • または、ブラウザーのキャッシュをクリア・無効化して再試行する

発生経緯

  1. 顧客テナントドメイン (*.logto.app) の JWKS キャッシュ設定を更新。Cloud ドメイン (*.logto.io) では JWKS キャッシュが誤って有効のままでした。
  2. Cloud サービスの署名キーをローテーション。*.logto.io の JWKS レスポンスがキャッシュされていたため、一部クライアントが古い JWKS を使い続け、新しいトークンの検証に失敗。
  3. *.logto.io の JWKS キャッシュをクリア、署名キーを前のものに戻し、さらに JWKS キャッシュを再度クリアしてクライアントが復旧したキーセットを参照するよう対応。
  4. 認証が復旧。一部ユーザーは引き続きブラウザーキャッシュが影響する可能性あり。

学んだこと

キーのローテーションは単なる鍵管理ではなく、発行者と検証者間のキャッシュ挙動も考慮すべきエンドツーエンドの互換性変更です。ドメイン間 (*.logto.app*.logto.io) での設定差異は実際のリスクであり、一方で安全な変更が他方のドメインで問題を起こす場合があります。

これまでの統合テストでは本番に近い JWKS キャッシュ挙動をカバーできておらず、この失敗モードはローテーション前に検出できませんでした。

再発防止策

今後の対応:

  • 署名キーのローテーションフローにおいて JWKS キャッシュの無効化を必須ステップとし、無効化後のみローテーションを行う
  • 無効化フローが構築されるまで JWKS キャッシュを無効化したままにし、その後パフォーマンス目的で再度有効化
  • JWKS キャッシュ挙動やキャッシュ無効化確認を含む、キーのローテーションに関する本番相当の統合テストを実施