ブログ
日本語

JWTデコード — JSON Web Tokenの中身を確認

JWTのヘッダーとペイロードをデコードし有効期限を確認(署名は未検証)

ブラウザー内で処理・アップロード不要

このツールはトークンをデコードするだけで、署名は検証しません。読めるからといって、トークンが有効または信頼できるとは限りません。データはブラウザーの外に出ません。

JWTとは

JWT(JSON Web Token)は、ユーザーが誰かといったクレームを運ぶトークンです。ドットで区切られたヘッダー、ペイロード、署名の3つの部分からなります。最初の2つはbase64urlでエンコードされたJSONなので、誰でも読めます。このツールはトークンを分解して中身を見やすく表示しますが、署名は確認しません。

使い方

  1. トークンを入力欄に貼り付けます。先頭の Bearer や改行は無視されます。
  2. ヘッダーとペイロードがインデント付きのJSONで表示され、それぞれにコピーボタンがあります。
  3. ペイロードにexp・iat・nbfがあれば、読みやすい日時と、残り時間または経過時間(「3時間後」「2日前」)で表示し、期限切れかどうかも示します。
  4. トークンの形式が正しくない場合は、どの部分に問題があるかをエラーで示します。5つの部分からなる暗号化トークン(JWE)は、鍵がないと読めないと表示します。

仕組み

  • 構造はRFC 7519(JWT)とRFC 7515(JWS)に従い、ドットで区切られたちょうど3つの部分である必要があります。
  • 各部分はRFC 4648のbase64url(- と _、パディングは省略可)としてデコードし、UTF-8 として読み込みます。
  • ヘッダーとペイロードはJSONオブジェクトである必要があり、配列や文字列ならエラーになります。
  • exp・iat・nbfは数値の場合にだけ秒として解釈し、お使いの地域の形式とISO 8601(UTC)で表示します。
  • 期限の状態は、現在時刻とexp・nbfを比べるだけです。署名は検証しない ため、algがnoneのトークンや署名が誤っているトークンも同じようにデコードされます。

例

部分 内容
トークンの先頭 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
ヘッダー {"alg": "HS256", "typ": "JWT"}
ペイロード {"sub": "1234567890", "name": "John Doe", "iat": 1516239022}
iat 2018-01-18T01:30:22Z

このトークンはJWTの解説でよく使われる練習用のサンプルです。ペイロードに {"name": "山田太郎"} を含むトークンも文字化けせずにデコードできます。

よくある質問

このツールはJWTの署名を検証しますか?

いいえ、デコードするだけです。トークンを読めることは、それが本物で有効であることを意味しません。信頼できるかどうかは、サーバー側で秘密鍵または公開鍵を使って署名を検証して判断する必要があります。

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

デコードはブラウザー内だけで行われ、トークンは送信されません。それでも、本番環境で使われているトークンを共有画面や文書に貼り付けるのは避けてください。

ペイロード内の日本語は正しく表示されますか?

はい。JWTはbase64urlでエンコードされたUTF-8のJSONで、このツールはUTF-8としてデコードするため、日本語・中国語・韓国語などの名前や絵文字もそのまま表示されます。

expの値はどんな時刻ですか?

NumericDate、つまりUTCの1970年1月1日からの経過秒数です。ブラウザーの言語とタイムゾーンで表示し、UTCのISO 8601形式も併記します。

ほしいツールはありますか?