本文へスキップ
ToolMug

JWT デコーダー

JSON Web Token を貼り付けると、ヘッダーとペイロードの中身、期限切れかどうかを確認でき、シークレットや公開鍵で署名を検証できます。すべてローカルで処理されるため、本番環境のトークンがサーバーに送られることはありません。

ブラウザ内で動作 — 入力した内容はアップロードされません

デコードしても署名は検証されません。誰でも任意のクレームを持つトークンを作成できます。

使い方

  1. トークンを貼り付けます。「Bearer 」の接頭辞は付いていてもいなくてもかまいません。3 つの部分が色分けされて表示されます。
  2. デコードされたヘッダーとペイロードを確認します。iat、nbf、exp のクレームは日時と相対時間で表示されます。
  3. 署名を検証するには、HS256/384/512 なら共有シークレットを入力し、RS、PS、ES、EdDSA のトークンなら公開鍵(PEM または JWK)を貼り付けます。
  4. デコードした JSON は、必要に応じてコピーできます。

オプションの説明

ヘッダー
トークンのメタデータで、通常は alg(署名アルゴリズム)と typ が入ります。kid フィールドがあれば、どの鍵で署名されたかがわかります。
ペイロード
クレーム本体です。登録済みクレームには sub(主体)、iss(発行者)、aud(対象者)、iat(発行日時)、nbf(有効開始日時)、exp(有効期限)があり、時刻はすべて Unix 秒です。
署名
ヘッダーとペイロードが改ざんされていないことを証明します。検証にはシークレット(HMAC)または発行者の公開鍵(RSA、ECDSA、EdDSA)が必要です。
シークレットは Base64 エンコード済み
HMAC のシークレットを Base64 エンコードして保存しているサービスもあります。手元のシークレットがエンコード済みの形式なら、これにチェックを入れてください。

主なクレーム

クレーム 意味 例
sub トークンの主体(ユーザー ID) "1234567890"
iss 発行者 "https://accounts.example.com"
aud 想定される受信者 "my-api"
exp 有効期限(Unix 秒) 1790427600
iat 発行日時(Unix 秒) 1790424000
nbf この日時より前は無効(Unix 秒) 1790424000
jti トークンの一意な ID。リプレイ攻撃の防止に使用 "a1b2c3"

例

トークン eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c をデコードすると、ヘッダーは {"alg":"HS256","typ":"JWT"}、ペイロードには sub、name、iat(2018 年 1 月 18 日)が含まれています。シークレット your-256-bit-secret を使うと署名の検証に成功します。

よくある質問

本番環境の JWT を貼り付けても安全ですか?

トークンはブラウザ内の JavaScript でデコードされ、アップロードやログ記録はされません。ただし、アクセストークンはパスワードと同じように扱ってください。有効なトークンを持っていれば、期限が切れるまで誰でも使えてしまいます。

JWT をデコードできれば本物だと言えますか?

いいえ。ヘッダーとペイロードは Base64URL でエンコードされているだけなので、誰でも読めますし偽造もできます。正しい鍵で署名の検証に成功して初めて、想定した発行元が発行したトークンだと確認できます。

正しいシークレットなのに検証に失敗するのはなぜですか?

シークレットが Base64 エンコードされていないか、末尾にスペースや改行が入っていないか、ヘッダーのアルゴリズムが発行元の使っているものと一致しているかを確認してください。トークンが 1 文字でも変わると署名は無効になります。

「alg none」とは何ですか?

署名なしであることを示すトークンです。サーバーは明示的に想定している場合を除き、このようなトークンを拒否する必要があります。受け入れてしまったことで、実際に認証回避が起きた事例があります。

RS256 トークンの公開鍵はどこで入手できますか?

ID プロバイダーは鍵を JWKS として公開しており、通常は /.well-known/jwks.json にあります。トークンのヘッダーの kid と一致する鍵をコピーし、JWK としてここに貼り付けてください。

プライバシー

このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。

関連ツール