公開鍵の確認

JWTデコード署名とクレームを分けて確認

内容を読んでから、想定するアルゴリズムと公開鍵を指定します。

JWTデコード

JWTトークン

トークンと鍵はこのページのメモリ内だけで処理します。リモート鍵の取得や入力の保存は行いません。

デコードJSONとレポート

未検証:デコードはトークンの有効性を保証しません。

署名とクレームの設定

想定するアルゴリズムを自分で選択してください。署名の一致は発行者の身元、権限、失効状態、全体の有効性を証明しません。

検証用の公開鍵

単一の公開JWKまたはSPKI PEM PUBLIC KEY。RS256は2048–8192ビットRSA、ES256はP-256が必要です。秘密鍵とリモートJWKSは受け付けません。

exp、nbf、iatは署名とは別に確認します。本ツールは未来のiatを不合格とします。欠けた時刻は欠落と表示し、発行者や対象者が空欄なら未確認です。UTC表示はミリ秒精度で、元の小数値はレポートに残ります。

上限:トークン100,000文字、公開鍵20,000文字、テストクレーム50,000文字。厳密なbase64url、UTF-8、JSONオブジェクトのみ。重複キーや変換で値が変わる数値は拒否します。

テストトークン生成

コンパクト形式のJWTを貼り付けてください。

JWTデコードは、APIに拒否されたトークンの中身を調べる出発点です。ヘッダー、発行者、対象者、日時を見比べ、想定したトークンが送信されているか確認できます。初期状態の署名は未検証です。

JWTデコーダーが読めるのはbase64urlで表現されたデータです。JWT署名検証には別途公開鍵が必要で、JWT有効期限の確認とは目的が異なります。読み取りだけでアクセス許可を判断しないでください。

JWTデコードで確認の意味を分ける

読めることと信頼できることを区別

JWTデコード後も、署名と日時の判定は独立しています。期限切れでも署名が一致する場合や、正常なJSONでも署名が不正な場合があるため、APIの拒否理由を一段ずつ調べられます。

トークンが読み取れるデータ、公開鍵の署名確認、独立した時計の確認に分かれる図。

テスト用の草稿を分離

JWTジェネレーターを有効にすると、ローカルの一時鍵でテストを作れます。生成はプレビューまでで、適用して初めてトークンと公開鍵を置き換えます。一度の取り消しで元の入力と結果を復元できます。

独立した草稿からトークンと公開鍵のプレビューを作り、適用して入力を置き換える図。

確認条件を先に決める

01

自動処理の範囲を知る

自動デコードは編集から350ミリ秒後に動作します。無効にするとデコードボタンやCtrl/Cmd+Enterを使えます。署名検証とテスト生成は自動実行しません。

02

想定値を自分で指定する

RS256かES256を選び、公開JWKまたはSPKI PUBLIC KEY PEMを入力します。必要なら発行者と対象者の想定値も設定します。ヘッダー内の鍵参照からは鍵を選びません。

03

基準時刻を揃えて出力する

時刻欄が空なら実行時の現在時刻を使います。Unix秒を指定すれば同じ時点を再現できます。現在時刻ボタンは置き換えプレビューを開き、変更後の古い結果は出力できません。

拒否の原因を段階別に調べる

ヘッダーとクレームの表示

2つのJSONオブジェクトと署名情報を表示します。宣言されたアルゴリズムと検証用に選んだ値を分け、kidやURLに信頼性を与えません。

公開鍵を使った署名比較

RS256は2048–8192ビットのRSA、ES256はP-256に対応します。署名の不一致、鍵の不正、未対応アルゴリズムを区別します。

日時を再現して確認

exp、nbf、iatを基準時刻と0–86400秒の許容差で確認します。未来のiatは本ツールの方針で不合格となり、欠けた時刻は欠落のまま表示します。

発行者と対象者の照合

issは文字列の完全一致で、audは文字列または配列内の一致で確認します。想定値が空なら未確認です。署名の一致だけでは権限の有無を決めません。

受け付ける形式と検証範囲

3部分のコンパクト形式
Bearer接頭辞、前後の空白、パディングなしで入力します。5部分のJWEは復号しません。noneは空の署名で読み取れますが、検証済みにはなりません。
厳密な文字と数値
ヘッダーとクレームはUTF-8のJSONオブジェクトに限ります。重複キー、単独サロゲート、不正なbase64urlを拒否します。表現可能な小数は受け付け、変換で数値が変わる場合はエラーになります。
公開情報だけを入力
単一の公開JWKか完全なSPKI PUBLIC KEY PEMを使います。秘密鍵と対称鍵は拒否します。JWKのalg、use、key_opsが矛盾する場合も検証できません。
リモート鍵と拡張は対象外
jku、x5u、kid、jwk、x5cは未確認のメタデータとして表示し、取得や鍵の選択に使いません。crit、b64、zipを含む署名の検証には対応していません。
サイズと日時表示の上限
トークン100,000文字、公開鍵20,000文字、テストクレーム50,000文字までです。Dateの対応範囲外の日時は不正です。UTCはミリ秒精度で表示し、元の小数はレポートに残します。生成したトークンも上限内に限り、超過時は切り詰めずエラーになります。
テストは認証の代わりにならない
生成器は初期状態で無効です。生成操作で一時鍵を作り、プレビューの適用後も自動検証しません。権限判定や失効確認はアプリケーション側で行う必要があります。

JWTデコードのよくある質問

JWTの署名をこのツールで検証できますか?

はい。RS256またはES256を明示的に選び、対応する公開JWKかSPKI PEMを指定してください。署名が一致しても、発行者、対象者、日時の確認結果は別途確認が必要です。

JWTに秘密の情報を入れてもよいですか?

通常の署名付きJWTは、ヘッダーとペイロードが暗号化されていません。base64urlを読める人なら内容を確認できるので、パスワードなどを入れる場所には向きません。

期限切れのJWTもデコードできますか?

はい。期限切れは内容の読み取りを妨げません。expの確認は不合格でも署名が一致することがあり、この2つは別の結果として表示されます。

expの期限切れは自動で判定されますか?

デコード時にexpを基準時刻と比較します。時刻欄が空なら現在時刻、入力済みならその値を使います。時刻の許容差も反映されるため、再現したい条件を確認してください。

alg: noneは危険ですか?

noneは署名なしを表します。内容は確認できますが、ここでは検証済みになりません。認証で受け入れるアルゴリズムはアプリケーション側で明示的に限定してください。

結果について気になる点はありますか?

調査を続ける

JWTデコードで想定アルゴリズム、公開鍵、基準時刻を揃え、現在の入力に対応したレポートを保存してください。