JWTデコーダー

JSON Web Tokenの中身を確認できます。

トークンを貼り付けるとデコードされます。
ヘッダー
ペイロード
署名

このツールはトークンをデコードするだけで、署名の検証は行いません。トークンはこのブラウザタブ内にとどまります。

ブラウザ内で動作します。入力した内容はどこにも送信されません。

JWTのデコード方法

  1. Bearerプレフィックスの有無にかかわらずトークンを貼り付けます。
  2. 整形されたJSONとしてヘッダーとペイロードを確認します。
  3. クレーム表で発行者、対象読者、有効期限を確認します。

JWTの3つのパーツ

パーツエンコード内容
ヘッダーBase64url JSON署名アルゴリズム(alg)とトークンの種類(typ)
ペイロードBase64url JSONクレーム(トークンの実際のデータ)
署名Base64urlバイト列ヘッダーとペイロードが改ざんされていないことの証明

よく使われる署名アルゴリズム

algの値種類備考
HS256対称、共有シークレット自分でトークンを発行・検証する単一のアプリでよく使われる
RS256非対称、RSAOAuthのように他者がトークンを検証する必要がある場合によく使われる
ES256非対称、楕円曲線同じ安全性でもRSAより短い署名
none署名なし検証者は常にこのアルゴリズムを拒否すべき

RFC 7519による標準クレーム

  • exp、nbf、iatはすべてNumericDate値で、Unixエポックからの秒数(ミリ秒ではない)です。
  • audは単一の文字列でも、複数の対象読者向けの場合は文字列の配列でも構いません。
  • jtiはトークンごとに一意であることを意図しており、これにより特定のトークンだけをブロックリストに載せられます。
  • 標準クレームはどれも必須ではありません。トークンはアプリケーションが定義する独自のクレームだけを持つこともできます。

JWTデコーダーのFAQ

JWTの3つのパーツとは何ですか?

ヘッダー、ペイロード、署名の3つで、それぞれbase64urlでエンコードされ、ドットでつながれています。ヘッダーは署名アルゴリズムを示し、ペイロードにはクレームが入り、署名によってサーバーはトークンの発行者を確認できます。

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

いいえ。ヘッダーとペイロードをデコードするだけで、署名のチェックは行いません。信頼する前に、シークレットまたは公開鍵を使ってサーバー側で検証してください。貼り付けたトークンはブラウザの外に出ません。

JWTのペイロードは暗号化されていますか?

通常の署名付きJWTでは暗号化されていません。エンコードされているだけなので、トークンを持っていれば誰でも読めます。そのためパスワードや個人情報を入れるべきではありません。暗号化されたトークン(JWE)は5パーツで構成され、鍵が必要です。

exp、iat、nbfとは何ですか?

いずれも1970年1月1日(UTC)からの秒数で表される時刻です。expはトークンの有効期限、iatは発行時刻、nbfはそれより前には受け付けてはならない時刻です。

トークンが期限切れと表示されるのはなぜですか?

expの時刻が端末の時計より前になっているためです。アクセストークンは5〜60分程度しか有効でないことが多いので、新しいトークンを取得し、パソコンの時計が正しく設定されているか確認してください。

RFC 7519は何を定めていますか?

JWTの形式そのもの、つまりドットでつながれた3つのbase64urlパーツと、iss、sub、exp、audといった標準クレームの意味を定めています。特定の署名アルゴリズムを要求するものではありません。

JWTは期限前に無効化できますか?

トークン自体は単なる署名付きデータなので、それ自体では無効化できません。早期に無効化するには、jtiクレームをキーにしたブロックリストや、短い有効期限と別のリフレッシュトークンの組み合わせなど、サーバー側での対応が必要です。

expやiatが日付ではなく大きな数値で表示されるのはなぜですか?

トークン内ではNumericDate値、つまりUnixエポック(1970年1月1日UTC)からの秒数として保存されているためです。このページでは分かりやすいように、生の数値の横に読みやすい日付も表示しています。

関連ツール