JWTデコード:トークンの中身と署名を確認

JWTデコードは、トークンを貼り付けるだけでJSON Web Tokenのヘッダー・ペイロード・署名と、発行者・有効期限・有効かどうかをわかりやすく表示します。秘密鍵や公開鍵を入力すれば署名の検証もできます。トークンがブラウザの外に出ることはありません。

出典:§§ 2, 4.1 (Claims, NumericDate), IETF RFC 7519 – JSON Web Token (JWT)。更新日:

トークンを貼り付けてください。先頭の「Bearer 」は付いたままで構いません。ピリオドで区切られた3つの部分からなります。

入力したテキストはブラウザー内にとどまります。送信・保存されず、アドレスバーにも表示されません。

HS256/384/512:秘密鍵をテキストで。RS/PS/ES:公開鍵をPEM(「BEGIN PUBLIC KEY」)またはJWKで。鍵はブラウザ内にとどまります。
HS256/384/512のみ。検証の前に秘密鍵をデコードします(生成された鍵でよくある形式)。オフのときは入力したテキストをそのまま使います。
マイツールボックス入力内容はこのブラウザーにのみ保存されます。

結果

状態
有効なJWT形式です(アルゴリズム:HS256)
署名
有効 ✓:署名は入力した鍵と一致しています。
ヘッダー
{ "alg": "HS256", "typ": "JWT" }
ペイロード
{ "sub": "1234567890", "name": "山田 花子", "iss": "https://beispiel.example", "iat": 1516239022, "exp": 4102444800 }
日時(UTC)
発行日時(iat): 2018-01-18T01:30:22Z 有効期限(exp): 2100-01-01T00:00:00Z – 73 年後
主なクレーム
発行者(iss): https://beispiel.example 主体(sub): 1234567890

計算方法

JSON Web Token(JWT)は、2者の間で情報(クレーム)を運ぶ仕組みで、ログイン後に「このユーザーはログイン済み」という証明としてよく使われます。ピリオドで区切った3つの部分 ヘッダー.ペイロード.署名 からなります(RFC 7519、RFC 7515)。

JWTをデコードする手順

  1. 上の欄にトークンを貼り付けます(「Bearer」付きでも可)。
  2. ヘッダーとペイロードが読みやすいJSONで表示され、その下に有効期限と発行者が出ます。
  3. 任意:「秘密鍵または公開鍵」の欄に鍵を入れると、署名を検証します。

トークンの中身

重要:読めることと検証は別

ヘッダーとペイロードはbase64urlでエンコードされているだけで、暗号化されていません。トークンを見た人は誰でも読めるので、パスワードなどの秘密は入れないでください。署名を検証しなければ、内容は誰でも書き換えられるため何の証明にもなりません。ここでの検証はHMACの秘密鍵(HS256/384/512)と公開鍵(RS、PS、ES)に対応し、alg: none のトークンは署名なしです。

アルゴリズム混同攻撃への対策

知られている攻撃では、公開鍵を秘密鍵として alg: HS256 で署名したトークンをサーバーに渡します。そのためこのツールは、HSの秘密鍵の欄に公開鍵や秘密鍵の一部が入力された場合、検証を拒否します(RFC 8725は、アルゴリズムをトークンだけから決めないよう勧めています)。

制限事項

よくある質問

JWTとは何ですか?

JSON Web Tokenは、ヘッダー・ペイロード・署名の3つの部分からなる、URLに安全に載せられる短い文字列です。ユーザーIDや有効期限などのクレームを運び、ログイン後の証明としてよく使われます。

JWTの中身は誰でも読めますか?

はい。ヘッダーとペイロードはbase64urlでエンコードされているだけで、暗号化されていません。署名は改ざんを防ぎますが、読まれることは防げません。JWTに秘密の情報は入れないでください。

JWTの署名を検証するには?

「秘密鍵または公開鍵」の欄に、HS256/384/512なら秘密鍵、RS256・PS256・ES256ならPEMまたはJWK形式の公開鍵を入力します。結果は「署名」の欄に表示されます。

オンラインのデコーダーにトークンを貼っても安全ですか?

このデコーダーはすべてブラウザ内で動作し、何も送信しません。ただし有効なトークンはアクセスの証明です。できるだけテスト用や期限切れのトークンを使ってください。

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

exp はトークンの有効期限が切れる時刻、iat は発行された時刻、nbf は有効になる時刻です。いずれも1970年1月1日UTCからの秒数です。

「未検証」と表示されるのはなぜですか?

鍵がないと署名を照合できないため、内容は読み取るだけになります。非対応のアルゴリズムや、合わない鍵の形式でも検証は行われません。

出典・根拠

更新日: · 編集方針

関連ツール