ヘルプ

JWTデコード:ヘッダー・ペイロード・有効期限を確認

このJWT解析ツールは、JSONウェブトークンをヘッダーとペイロードに分けて、貼り付けた瞬間に整形済みのJSONで表示します。expなどのタイムスタンプには読みやすい現地の日時を並べて表示し、期限切れかどうかをバッジで知らせます。署名の検証は任意です。トークンはブラウザの中で読み取られ、アップロードされません。


JWTデコード方法:貼り付けるだけ

  1. トークンをJSONウェブトークンの欄に貼り付けてください。ヘッダーとペイロードがすぐに表示されます。デコードボタンを押す必要はありません。
  2. 結果の上のバッジで状態を確認してください。期限切れ、まだ有効ではない、有効期限なしのどれか、そして署名の状態がわかります。
  3. ヘッダーをコピーまたはペイロードをコピーを押すと、そのブロックをそのままのJSONでコピーできます。日時の注記はコピーに含まれません。
  4. 消去を押すと欄が空になり、別のトークンを試せます。

JWTデコーダーに貼り付けるトークンは、受け取ったままで大丈夫です。先頭のAuthorization: Bearer、前後の引用符、改行は自動で取り除かれるので、リクエストヘッダーやログの1行、JSONレスポンスからそのままコピーできます。入力欄は最大100,000文字まで受け付けます。クレーム内の大きな数値や日本語などの文字も正確に表示され、長い値は折り返されます。

JWT中身確認:ヘッダーとペイロードの見方

JWTは、ドットでつながった3つのbase64url部分(header.payload.signature)でできています。最初の2つは符号化されただけのJSONなので、シークレットがなくてもJWTの中身は読めます。よく見るクレームは次のとおりです。

ヘッダーには通常、alg(署名アルゴリズム)とtypが入り、署名に使った鍵のIDであるkidが入ることもあります。

JWT有効期限確認:expを日時で読む

exp、iat、nbf、auth_timeは秒単位のUnixタイムスタンプです。このツールは、それぞれの数値の横に現地の日時を書き添えるので、自分で変換する必要はありません。結果の上のバッジは、お使いの端末の時計を基準にしています。

JWT署名検証:シークレットと公開鍵を使う

デコードでわかるのはトークンの内容までです。改ざんされていないことを確かめられるのは署名だけです。結果の下にある署名を検証する(任意)を使います。アルゴリズムは、トークンのalgを読み取る自動判定のままでも、自分で選んでもかまいません。選べるのは、HS256、HS384、HS512、RS256、RS384、RS512、PS256、PS384、PS512、ES256、ES384、ES512、EdDSAです。そのうえで、シークレットまたは公開鍵の欄に鍵を貼り付けてください。

バッジは署名は有効ですまたは署名は無効ですに変わります。鍵がないときは署名は未検証ですのままです。algがnoneのトークンには署名なし: このトークンは署名されていませんと表示されます。秘密鍵を貼り付けると、ツールはそれを受け付けず、公開鍵を求めます。検証に必要なのは公開鍵だけです。確認にはブラウザ標準のWebCryptoを使い、EdDSAは新しいブラウザが必要です。

JWTトークン解析でエラーが出るとき

エラーは入力欄の下に表示され、問題のある部分を示します。

トークンを貼り付けても安全ですか?

トークンと鍵のデコードと確認は、すべてお使いの端末の中で行われます。アップロードも保存もされず、アカウントも要りません。ただし、有効なアクセストークンは認証情報そのものです。できるだけ、期限切れのトークンやテスト用のトークンをお使いください。

このツールはトークンの読み取りと確認だけを行います。JWTの作成や署名、JWEの復号はできません。


よくある質問

シークレットなしでJWTをデコードできますか?

できます。JWTのヘッダーとペイロードはbase64urlで符号化されているだけで、暗号化されていません。そのため、トークンを持っていれば誰でも読めます。「JSONウェブトークン」の欄に貼り付けると、両方がすぐに表示されます。シークレットや公開鍵が必要なのは署名の確認だけで、ここでは任意です。

JWTが期限切れかどうかを確認するには?

トークンを貼り付けて、結果の上のバッジを見てください。expクレームをもとに、期限切れになってからの経過時間、または残り時間が表示されます。expがないトークンには「有効期限なし: このトークンにはexpクレームがありません」と表示され、nbfがまだ未来のトークンは、まだ有効ではないと表示されます。

JWTのexpの値を日時に変換するには?

変換する必要はありません。expは秒単位のUnixタイムスタンプで、このツールは対応する現地の日時を「ペイロード」ブロックの数値の横に表示します。iat、nbf、auth_timeも同じように表示されます。

公開鍵でJWTの署名を検証するには?

「署名を検証する(任意)」で「アルゴリズム」を自動判定のままにするか、トークンが使うものを選び、「シークレットまたは公開鍵」に公開鍵を貼り付けてください。PEM形式の鍵(-----BEGIN PUBLIC KEY-----)、RSA PUBLIC KEY、X.509証明書、JWK、JWKSのどれでも使えます。バッジは「署名は有効です」または「署名は無効です」に変わります。

JWTトークンデコードをサーバーに送らず端末内で行えますか?

はい、このツールはそのように動作します。トークンの分割、デコード、確認はすべてブラウザの中で行われ、アップロードも保存もされません。署名の確認にはブラウザ標準のWebCryptoを使うため、トークンも鍵もどこにも送信されません。

JWTのヘッダーとペイロードには何が入っていますか?

ヘッダーはトークン自体の説明で、通常は署名アルゴリズム(alg)と種類(typ)、場合によっては鍵のID(kid)が入ります。ペイロードにはクレームが入り、発行者(iss)、対象となる主体(sub)、宛先(aud)、有効期限(exp)などがあります。どちらもJSONのまま、「ヘッダー」と「ペイロード」のブロックに表示されます。

JWTのalgがnoneとはどういう意味ですか?

トークン自身が署名なしだと宣言している状態です。署名部分は空で、確認するものがありません。このツールは「署名なし: このトークンは署名されていません」と表示します。サーバーは、このようなトークンを本人確認の証拠として受け入れてはいけません。

bearerトークンデコードはどうすればいいですか?

JWTであれば、そのまま貼り付けてください。先頭のAuthorization: Bearer、前後の引用符、改行は自動で取り除かれるので、リクエストヘッダーやログから直接コピーできます。ドットで区切られた3つの部分になっていない不透明なbearerトークンはデコードできません。その場合は、見つかった部分の数が表示されます。

暗号化されたJWEの復号や、JWTの作成・署名はできますか?

できません。5つの部分があるトークンはJWEで、中身は暗号化されているため、秘密鍵がないと読めません。ツールはそれを判別して、エラーではなく説明を表示します。トークンの生成、署名、編集もできず、読み取りと確認だけを行います。

おすすめ

無料でツールを続ける支えになります。✨

画像はイメージです。 Amazonのアソシエイトとして、Capsule Toolsは適格販売により収入を得ています。