
「公開鍵、どこに置いたっけ?」
JWTの署名検証に RSA などの公開鍵方式を使うとき、必ずぶち当たる壁があります。
「公開鍵はどうやって配布するのが一番安全?」「鍵を更新したとき、全サーバーの設定を書き換えるの?」
そんな悩みをスマートに解決するのが JWKS (JSON Web Key Set) という仕組みです。
JWKS:公開鍵の「ショーケース」
JWKS(ジェイ・ダブリュー・ケー・エス)は、その名の通り「JSON形式で書かれた鍵のセット」です。
認証サーバー(Auth0 や Cognito など)が特定の URL でこの JSON を公開し、検証側の API サーバーがそれを読み取りに行きます。
いわば、**「最新の公開鍵はこちらに展示していますので、ご自由にお持ち帰りください」**というショーケースのようなイメージです。
なぜ JWKS が嬉しいのか?
- 自動ローテーション: 鍵を新しくしても、ショーケースの中身を入れ替えるだけ。APIサーバーはURLを見に行くだけで最新の鍵を手に入れられます。
- 複数の鍵を管理: 「古い鍵」と「新しい鍵」を同時に置いておけるので、移行期間もスムーズです。
- 世界標準: OAuth 2.0 や OIDC で広く採用されているため、多くのライブラリが標準で対応しています。
JWKSのナカミ:ただのJSONです
一見難しそうですが、中身はとてもシンプルです。 keys という配列の中に、個々の鍵の情報が入っています。
{
"keys": [
{
"kty": "RSA", // 鍵の種類(RSAとか)
"use": "sig", // 用途(署名用だよ!)
"kid": "my-key-2024", // 鍵の識別子(名前みたいなもの)
"n": "...", // 公開鍵のデータその1
"e": "AQAB" // 公開鍵のデータその2
}
]
}
DevToolKits で JWKS を「作る側」を体験する
当サイトの JWKS生成ツール を使えば、開発やテストに必要な鍵ペアをブラウザ上だけで作成できます。
「公開鍵(JWKS形式)」と「秘密鍵(PEM形式)」の両方が手に入るので、ローカルでの認証機能の実装テストに最適です。もちろん、ブラウザ内ですべて完結するため、秘密鍵がインターネットに流れる心配はありません。
まとめ
JWKSは、複雑な鍵管理をシンプルに、電力的に安全にしてくれる優れた発明です。
仕組みを理解して使いこなすことで、あなたの認証システムはぐっと洗練されたものになります。「鍵の配布」に迷ったら、このショーケースの仕組みを思い出してくださいね。