JWT エンコーダー/デコーダー

トークンを貼り付けるだけでヘッダーとペイロードを表示します。独自のクレームから署名することもでき、ボタン操作もアップロードも不要です。

デコード時は任意です(入力すると検証します)。署名には必須です。

使い方

  1. トークンを貼り付けると、ヘッダーとペイロードがすぐに表示されます。ボタンを押す必要はありません。トークン由来の内容は署名されたときのまま保持され、入力が書き換えられることはありません。
  2. 入力欄の下にシークレットを入力すると署名を検証できます。空のままでは「未検証」となり、クレームはそのまま表示されます。
  3. エンコードに切り替え、クレームを JSON で入力し、HS256/384/512 とシークレットを選ぶと、生成されたトークンをコピーできます。モードを切り替えても入力内容は消えません。
  4. 標準の exp / iat / nbf クレームは、お使いの言語とタイムゾーンで表示され、期限切れや有効開始前の印も付きます。

例

トークン

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1LTEwMjQiLCJuYW1lIjoiSmFuZSBDb29wZXIiLCJyb2xlIjoiZWRpdG9yIiwiaXNzIjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLCJpYXQiOjE3NjcyMjU2MDAsImV4cCI6MTc5ODc2MTYwMH0.jCqliF6m-TAglXcHrjuXj7kYIjjsRO7kv6_8O1yb_7Q

ヘッダーとペイロード

Header
{
  "alg": "HS256",
  "typ": "JWT"
}

Payload
{
  "sub": "u-1024",
  "name": "Jane Cooper",
  "role": "editor",
  "iss": "https://api.example.com",
  "iat": 1767225600,
  "exp": 1798761600
}

シークレット「dev-secret-change-me」で署名されています。シークレット欄に入力すると、ステータス行が「署名を検証しました」に変わります。エンコードに切り替えてサンプルを押すと同じペイロードが得られ、同じシークレットを使えばこのトークンが 1 文字ずつ正確に再現されます。

ルール・制限・既知の問題

  • 署名と検証に対応しているのは HS256、HS384、HS512 のみです。RS*、ES*、PS* のトークンはデコードしてそのまま表示しますが、署名の検証は行いません。公開鍵が必要なため、推測せずにステータス行でその旨を表示します。
  • 署名なしトークン(alg: none)はデコードして明確に警告しますが、生成はしません。シークレットなしで署名を要求すると、署名なしトークンではなくエラーになります。
  • エンコード時はヘッダーを自身で構築します(`{"alg": … ,"typ": "JWT"}`)。kid、jku、x5c、cty などのヘッダーフィールドは引き継がれません。このツールが署名するのはクレームであり、証明書チェーンではありません。
  • クレームの JSON は署名前にコンパクトに再シリアライズされるため、インデントやコメントはトークンに含まれません。キーの順序は JavaScript オブジェクトに従い、重複キーは最後の値にまとめられ、数値に見えるキーは先頭に移動します。
  • 非常に大きな整数は精度を失います。`12345678901234567890` は丸められた値で返ります。これは JavaScript の数値の仕様です。黙って補正することはないため、正確な桁数が必要な場合は文字列を使ってください。
  • クレームは読みやすくインデントして表示しますが、署名の対象はトークン内の生のセグメントそのものです。裏で再エンコードすることはないため、ここで検証できたトークンはご自身のコードでも検証できます。
  • Base64url は厳格です。`+`、`/`、`=` は黙って受け入れずエラーとして報告し、UTF-8 でないバイト列も置換文字で埋めずに報告します。貼り付けたトークン内の空白は無視されます(トークンに空白は含まれないため)。
  • 暗号化された JWE(5 つの部分)は復号しません。貼り付けた内容がそれであることを通知します。
  • サイズ上限は 10,000 文字です。アップロード、保存、URL への書き込み、共有は一切行いません。共有ボタンが共有するのはこのページのアドレスのみで、トークンやシークレットは共有されません。

クレームを確認した後によく使われるツールです。