ブラウザーで動作するツール

JWTデコーダー

JWTを貼り付けると、ヘッダーとペイロードを読みやすいJSON形式で表示します。登録済みの時刻クレームはUTCとローカル時刻で確認できます。トークンがブラウザーの外に出ることはありません。

すべての処理はブラウザー内で実行され、入力内容がサーバーへ送信されることはありません。

このツールはJWTの内容をデコードして表示するもので、署名の正当性は検証しません。 表示されるのはトークン自身が主張している内容にすぎません。機密情報を含むトークンの取り扱いには注意してください。本番環境の秘密情報を貼り付けないでください。

動作を確認したいだけの場合は、サンプルのトークンを読み込んでください。このページが署名鍵や秘密情報を要求することはありません。

デコードしたヘッダー
デコードしたペイロード
署名セグメント(Base64URL、デコードしません)
登録済みクレーム

このJWTデコーダーの動作

JWTを構成する3つのセグメント

コンパクト形式のJWTは、ドットでつないだ3つのBase64URL文字列です(header.payload.signature)。ヘッダーはトークンの種類と署名アルゴリズムを示し、ペイロードはクレームを保持し、署名は検証する側が鍵を使って確認するためのバイナリデータです。このツールはヘッダーとペイロードをテキストにデコードし、署名セグメントはそのままの形で表示します。

Base64URLのデコード

JWTのセグメントはURLで扱いやすいBase64の文字集合(+/の代わりに-_)を使い、末尾の=による詰め物を省略します。このツールは詰め物を復元したうえで、文字集合に含まれない文字やありえない長さを拒否し、結果を厳密にUTF-8として読み取ります。壊れたトークンは文字化けではなく、明確なエラーとして表示されます。

登録済みクレーム

ペイロードには、RFC 7519で定められたクレームが含まれることがあります。iss(発行者)、sub(主体)、aud(対象)、exp(有効期限)、nbf(有効開始)、iat(発行時刻)、jti(トークンID)です。時刻に関するクレームはNumericDate、つまりUnix秒であり、このツールはUTCと端末のローカル時刻の両方に変換して表示します。

時刻クレームの状態表示

状態表示はexpnbfを端末の時計と比較します。expが過去であれば期限切れnbfが未来であればまだ有効ではない、時計がその範囲内にあれば時刻クレーム上は有効期間内expがなければ有効期限のクレームなしと表示します。端末の時計がずれていると、この判定も同じだけずれます。

デコードは検証ではありません

このツールはJWTの内容をデコードして表示するもので、署名の正当性は検証しません。機密情報を含むトークンの取り扱いには注意してください。誰でも任意の内容のトークンを作成できるため、デコードできたという事実そのものは、トークンの正当性を何も示しません。

検証とは、発行者の鍵で署名を確認し、発行者、対象、有効期間を検査することを指します。これは信頼できる環境上の認証ライブラリが行う処理です。このページは意図的に署名検証を行わず、鍵や秘密情報を要求することもありません。時刻クレーム上は有効期間内と表示された場合でも、そのトークンが本物であるとは限りません。

入力の扱い

デコードは「デコード」を押したあと、ブラウザー内で実行されます。トークンがwinterm.devへアップロードされたり、記録されたり、保存されたりすることはありません。ページのURLやブラウザーの履歴に含まれることもなく、このサイトには入力内容を観測する解析スクリプトもありません。サイト全体の方針はプライバシーポリシー(英語)を参照してください。