JWKSによる署名検証
JWKS Verifier
JWKSのエンドポイントから鍵を取り、kidで選んで、トークンの署名と標準クレームを検証します。
発行者が公開しているJWKSに照らしてトークンを検証します。URLで取ってきても、貼り付けても構いません。`kid`で鍵を選び、署名を確かめ、続けて`exp`と`nbf`、そして指定すれば`iss`と`aud`も確かめます。トークンは送信しません。取りに行くのはJWKSのURLだけです。
トークンはこのタブから出ません。
署名の検証はブラウザーの WebCrypto が行い、このページにサーバー側はありません。ネットワークに出るのは、入力した JWKS URL への GET ひとつだけです。そのリクエストには URL のほかに何も — トークンも — 載りません。
トークン
Bearer の接頭辞はこちらで外します。
公開鍵(JWKS)
ブラウザーが直接 GET します。トークンは送りません。
発行者の /.well-known/openid-configuration にある `jwks_uri` がこのアドレスです。
期待する値(任意)
空のままにすると、そのクレームは検査しません。exp と nbf は必ず検査します。
何を検証するか
- · RS256/384/512、PS256/384/512、ES256/384/512、EdDSA(Ed25519)を WebCrypto で検証します(RFC 7518 §3、RFC 8037)。HS* は共有秘密を使うので JWKS ではまったく検証できません。そちらは JWT デコーダーが秘密で検査します。ES256K と Ed448 はどのブラウザーの WebCrypto にもありません。
- · 鍵はトークンヘッダーの
kidで選びます(RFC 7515 §4.1.4)。鍵の交換中は JWKS に鍵が複数あるので、kid が合わないときはそう伝えます。 - ·
exp・nbfはずれの許容を見て検査し、iss・audは期待値を書いたときだけ検査します(RFC 7519 §4.1)。alg: noneは常に拒否します。
使い方
トークンを貼り付けます
その`alg`、`kid`、発行者がすぐに読み出されます。どのJWKSが必要なのかを教えてくれるのが、それです。
鍵の集合を取ってくるか、貼り付けます
発行者の`/.well-known/openid-configuration`が、その`jwks_uri`を示しています。Google、Microsoft、Appleにはショートカットのボタンがあります。それ以外は入力するか貼り付けてください。
期待する値を埋めます
空のままにした`iss`と`aud`は、まったく検査しません。別の対象者に向けて発行されたトークンが実際のシステムで受け入れられてしまうのは、そのためです。時計のずれの許容は、1分ほど食い違うサーバーのためのものです。
判定とクレームの表を読みます
見出しが、受け入れるか受け入れないかを言います。その下の表が、どの検査がその答えを出したのか、どの鍵が選ばれたのかを示します。
よくある質問
CORSのエラーで取得できませんでした
ブラウザが読むには、JWKSのエンドポイントがCORSのヘッダーを返す必要があります。Google、Microsoft、Appleは返しますが、自前で立てた発行者の多くは返しません。curlで自分で取ってきて、JSONを貼り付けてください。検証の中身はどちらでも同じです。
kidに合う鍵が無いと出ます
たいていは鍵のローテーションです。発行者がローテーションする前にそのトークンが署名され、JWKSにはもう新しい鍵しか入っていない、ということです。取ってきたJWKSとは別の発行者から来たトークンだ、という場合もあります。
`alg: none`が常に拒否されるのはなぜですか
それを受け入れることが、JWTの古典的な脆弱性そのものだからです。攻撃者がヘッダーを書き換え、署名を落とすと、ヘッダーを信じるライブラリはそのトークンを通してしまいます。検証の経路にそれを使う正当な理由はありません。
HS256のトークンも確認できますか
ここではできません。HS*は共有の秘密鍵で、JWKSが公開するのは公開鍵です。秘密鍵を受け取れるJWTのデコーダーを使ってください。JWKSにHMACの鍵を載せる発行者は、トークンを発行する能力そのものを公開していることになります。
ここから渡せます
JWTデコーダー
JWT Decoder
ヘッダーとペイロードを復号し、期限のクレームを現地時刻で見せ、渡した鍵で署名も検証します。
鍵ペア生成
Key Pair Generator
RSA・ECDSA・Ed25519の鍵ペアを作り、PEM・JWK・OpenSSHで書き出します。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
YAMLフォーマッター・検証
YAML Formatter & Validator
YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。
次の一手
このツールが出したものをそのまま受け取れる道具です。
証明書デコーダー
Certificate Decoder
PEMやDERの証明書・CSRを解いて、サブジェクト・SAN・有効期間・鍵用途とチェーンの手がかりを示します。
JWTデコーダー
JWT Decoder
ヘッダーとペイロードを復号し、期限のクレームを現地時刻で見せ、渡した鍵で署名も検証します。
鍵ペア生成
Key Pair Generator
RSA・ECDSA・Ed25519の鍵ペアを作り、PEM・JWK・OpenSSHで書き出します。
JSON⇄CSV変換
JSON ⇄ CSV
入れ子のJSONをドット記法の列名で平らに開くか、表からオブジェクトを組み直します。
JSON差分比較
JSON Diff
キーの順序を無視して2つのJSONを構造で比べ、追加・削除・変更されたパスを挙げます。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。