JWTデコーダーとクレーム確認ツール
3つの部分からなるコンパクトなJSON Web Tokenをデコードして、ヘッダーとクレームを確認し、時刻に関するクレームを現在の時計と比較します。デコードは署名を検証せず、信頼性も証明しません。
JWT確認ツールの仕組み
署名付きのコンパクトJWTは、ピリオドで区切られた3つのBase64url部分で構成されます。JSONヘッダー、クレームを含むJSONペイロード、署名部分です。このツールはヘッダーとペイロードをUTF 8のJSONオブジェクトとしてデコードします。署名、発行者、対象者、権限、認可は検証しません。
3つの部分からなるコンパクトトークンを入力してください。デコードしたヘッダーとペイロードは整形済みJSONで表示され、表にはiss、sub、aud、exp、iat、nbfなどの一般的なクレームが表示されます。このツールは5つの部分からなる暗号化形式に対応していません。保護ヘッダーはJSONとして読める場合がありますが、暗号化されたペイロードのクレームは復号しないと確認できません。
exp、iat、nbfのNumericDate値は、UTCエポックからの秒数として解釈され、小数秒も扱います。有効期限と有効開始時刻を表示中の時計と比較します。値がない場合と形式が不正な場合は別々に表示します。この比較でトークンやクレームが有効と確認されるわけではありません。
署名部分が存在すると表示されても、3番目の部分に文字があることを示すだけです。暗号学的な署名値、アルゴリズム、鍵、発行者は検証しません。発行元のサービスがトークンを検証するまで、デコードしたクレームを信頼しないでください。
手順
- 3つの部分からなるコンパクトJWTをトークン欄に貼り付けます。
- デコード済みのヘッダー、ペイロード、署名部分、表示されたクレームを確認します。
- expとnbfを表示中の時計と比較し、信頼する前に想定する鍵と規則でトークンを検証してください。
計算例
次の例のトークンを貼り付けます: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lzc3Vlci5leGFtcGxlIiwic3ViIjoidXNlci0xMjMiLCJhdWQiOiJhcGkuZXhhbXBsZSIsImV4cCI6MTg5MzQ1NjAwMCwiaWF0IjoxODkzNDUyNDAwLCJuYmYiOjE4OTM0NTI0MDB9.c2ln. algはHS256、typはJWTのヘッダーと、発行者、主体、対象者、有効期限、発行時刻、有効開始時刻のクレームにデコードされます。
この例は3番目の部分が空でないため、署名の文字列が存在すると表示されます。署名自体は検証しません。expは2030年1月1日00:00 UTC、iatとnbfは2029年12月31日23:00 UTCに相当します。比較結果は現在の時計によって変わります。
この確認ツールを使う場面
開発や問題調査で、3つの部分からなるコンパクトトークンのJSONヘッダーとクレームを確認できます。
署名と認可は別の信頼できるサービスで検証してください。検証に成功するまで、デコード内容を信頼しないでください。
よくある誤解
読めるJSON、署名部分の存在、有効期限前のexpクレームを真正性の証明とみなさないでください。デコードと時刻比較は暗号学的検証ではありません。
iss、aud、sub、独自の権限がペイロードにあるだけで真実だと考えないでください。サービス側が署名を検証し、クレームと認可の規則を適用する必要があります。
JWTの構造と時刻クレーム
コンパクトJWT = Base64url(UTF8(JSONヘッダー)) . Base64url(UTF8(JSONペイロード)) . 署名部分
有効期限到達 = 現在のUTC時刻を秒で表した値 ≥ exp
有効開始時刻到達 = 現在のUTC時刻を秒で表した値 ≥ nbf
NumericDate = 1970 01 01 00:00:00 UTCからの秒数
このツールは3つの部分からなる署名付きコンパクト形式を確認します。パディングなしのBase64urlとUTF 8を厳密にデコードし、ヘッダーとペイロードがJSONオブジェクトであることを求めます。有効期限や開始時刻の結果は時計との比較であり、署名検証や認証判断ではありません。
対象範囲と制限
このページは3つの部分からなるコンパクトJWTを確認し、ヘッダーとペイロードをデコードします。署名、アルゴリズム、鍵を検証せず、発行者や対象者を確認せず、権限を評価せず、アプリがトークンを受け入れるべきか判断しません。5つの部分からなるJWEを復号せず、鍵の取得、発行者やトークンサービスへの接続もしません。対応する数値精度を超えるJSON数値は拒否され、表示日時の精度はミリ秒です。時刻クレームはブラウザーの時計と比較するため、サービス側の時計と異なる場合があります。トークンは保存されませんが、開いたページを見られる人は内容を確認できます。
用語
- JWT
- JSON Web Token。クレームを表す構造で、署名、改ざん防止、暗号化が施される場合があります。
- クレーム
- トークンのペイロードにある名前付きの値です。発行者、主体、対象者、時刻などを表します。
- NumericDate
- 1970年1月1日00:00:00 UTCからの秒数です。小数秒も使えます。
よくある質問
デコードできたトークンは有効ですか。
いいえ。デコードで分かるのは読み取れる構造だけです。信頼できるサービスが発行したことや、内容が信頼できることは証明されません。
このツールは署名を検証しますか。
いいえ。3番目の部分に文字列があるかだけを表示します。検証には想定するアルゴリズムと発行者を信頼する鍵が必要です。
なぜ5つの部分からなるトークンに対応していないのですか。
5つの部分からなるコンパクトJWEでは、保護ヘッダーをJSONとして読める場合があります。暗号化されたペイロードのクレームは復号しないと確認できません。このツールは3つの部分からなるコンパクトJWTだけに対応します。
ここでexp、iat、nbfは何を意味しますか。
UTCエポックからの秒数で表すNumericDateクレームです。expとnbfを現在の時計と比較し、iatは日時として表示します。欠落や不正な値は別々に示します。この比較はトークンを検証しません。
署名部分があると何が分かりますか。
3番目の部分が空でないことだけです。署名のバイト列、アルゴリズム、鍵、発行者、対象者、権限は検証しません。
関連ツール
Base64ペイロードエンコーダーでは、個別のエンコード部分を確認できます。署名とクレーム要件は、IDプロバイダーまたはサービスの説明を参照してください。