FusionAuth JWTにおける署名キー設定とシャドウキーの理解
この記事では、FusionAuthがJWTの署名に使用する暗号鍵の設定方法と、キーローテーション時に新旧両方の鍵でトークンを検証できる「シャドウキー」の概念について解説します。シャドウキーを適切に設定することで、署名キーの切り替え時にも既存のJWTの検証を継続でき、ダウンタイムなく安全なキーローテーションを実現できます。
背景メモ
- **FusionAuth** は、Java ベースのオープンソース認証・認可プラットフォーム。パスワードレス認証やソーシャルログイン(Google/Apple/GitHub など)に対応し、開発者が自前の IdP(アイデンティティプロバイダー)を構築する代わりに埋め込めるミドルウェアとして使われる。
- **JWT(JSON Web Token)** は、認証情報を JSON 形式でやり取りする業界標準規格(RFC 7519)。サーバーが秘密鍵(または公開鍵ペア)で署名し、その署名を検証することでトークンの改ざんを防ぐ。
- **署名鍵(Signing Key)とシャドウキー(Shadow Key)** は、FusionAuth 独自の概念。運用中に署名鍵をローテーション(切り替え)する際、新しい鍵で署名しつつ、以前の鍵(シャドウキー)で発行されたトークンも検証できるようにする仕組み。これにより、全クライアントに新しい鍵を即座に周知しなくても、認証が途切れない。
- フォーラムの投稿では、この「シャドウキー」の使い方、キーローテーション時の注意点、複数鍵の管理戦略について議論されている。JWT を利用するアプリケーション開発者にとっては、安全かつダウンタイムなく鍵を更新する実践的な知見にあたる。