JWTデコーダーとは#
JWTデコーダーは、JSON Web Tokenの中身を読みやすく表示するツールです。トークンを貼り付けると、入力に合わせてヘッダー・ペイロード・署名に分割されます。
ヘッダーとペイロードはbase64urlから整形されたJSONに変換されます。expやiat、issなどの登録クレームは、ローカル時刻・UTC時刻・Unixタイムスタンプを添えた表にまとまり、有効期限の状態もひと目で分かります。HMAC署名は、ブラウザ内でシークレットと照合できます。
使い方#
- JWTを入力欄に貼り付けます。
BearerプレフィックスやAuthorization:ヘッダ、値全体を囲む引用符、改行は自動で除去されます。 - デコードされたヘッダーとペイロードを確認します。
- クレーム表で有効期限や各種時刻を確認します。
- HS256・HS384・HS512のトークンでは、シークレットを貼り付けて署名を検証します。
確認できること#
- ヘッダーとペイロード: デコードされたJSON。登録されていないプライベートクレームも含みます。
- 登録クレーム: iss、sub、aud、exp、nbf、iat、jtiを一覧できます。時刻クレームにはローカル時刻、UTC時刻、Unixタイムスタンプが並び、各クレームの値は個別にコピーできます。
- 有効期限: トークンが有効か、期限切れか、まだ有効でないかを、残り時間または経過時間とともに確認できます。
- サイズ: トークン全体と各パートの文字数・バイト数を確認できます。
署名を検証する#
HMAC署名(HS256・HS384・HS512)の署名検証に対応しています。シークレットを入力すると、署名の照合結果が自動で表示されます。照合はブラウザ内で行われ、入力したシークレットが送信・保存されることはありません。
RSやESなど、HMAC以外のアルゴリズムを使ったトークンもデコードできますが、署名の検証には対応していません。
デコードで分かるのは、トークンがそう主張している内容だけです。ペイロードは誰でも自由に作れます。クレームを信用する前に、シークレットとの照合かサーバー側での検証を行ってください。
活用シーン#
- APIが401や403を返すときに、expの切れやaud・issの不一致を確認する。
- 認証まわりの不具合を調べる前に、フロントエンドが保存しているトークンの中身を読む。
- ヘッダーのalgなどの項目は、署名方式を変えるときに事前に確認する。
よくある質問#
いいえ。すべてブラウザ内で処理され、トークンもシークレットも送信・保存されません。
はい。トークンを貼り付けるとヘッダーとペイロードはデコードされます。シークレットを使うのは、HMAC署名を検証するときだけです。
いいえ。扱えるのはHMAC署名のみです。ほかのアルゴリズムのトークンもデコードでき、クレームや有効期限、サイズは確認できます。
トークンの署名に使われたシークレットと入力した値が違うか、トークンが壊れている・変更されている可能性があります。ヘッダーのalgとシークレットを確認して、もう一度試してください。
有効期限の判定には端末の時計を使っています。時計がずれている場合や、サーバー側が多少の時刻ずれを許容している場合は、アプリの挙動と一致しないことがあります。
expは有効期限、iatは発行時刻、nbfは利用できるようになる最も早い時刻です。いずれも秒単位のUnixタイムスタンプです。
注意点#
- base64urlはエンコード方式で、暗号化ではありません。ヘッダーとペイロードは、トークンを手に入れた人なら誰でも読めます。
- 対応するのは3つの部分からなるJWSのみです。5つの部分からなる暗号化トークン(JWE)はデコードできません。