JWTデコーダー

JSON Web Token (JWT) をブラウザ上でデコードし,ヘッダー,ペイロード,署名の各パートをJSON形式で整形して表示するツールです.Base64URLの変換や,expクレームと端末時計の比較を自動で行い,開発時のデバッグを支援します.このツールのデコード処理はブラウザ内で行うため,テスト用トークンの内容確認をローカル環境で迅速に実施できます.

読み込み中...

このツールが向いている用途

操作欄に戻る ↑

ピリオドで区切られた3パートのJWT文字列をBase64URLデコードし、HeaderとPayloadのJSON整形表示、署名部の確認、expクレームと端末時計の有効期限比較を行います。

まず試せること

ダミー署名を含む内蔵サンプルボタンを押し、クレーム一覧のJSON整形表示や有効期限の判定メッセージがどのように表示されるかを確認してください。

利用条件

署名の正当性検証(alg/公開鍵検証)やiss・aud・nbf・失効確認は行いません。トークン自体の真正性や認証成否を判定するものではないため、本物の秘匿トークンの入力は避けてください。

入力データの記述例

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

処理後の出力結果例

// Header
{
  "alg": "HS256",
  "typ": "JWT"
}
// Payload
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

よく発生する構文エラー・記述ミス

  • •トークン内に区切り文字であるドット(.)が2つ含まれていない.
  • •Base64urlエンコード時のパディング文字(=)の処理異常によるパースエラー.
  • •有効期限(expクレーム)の形式がUNIXタイムスタンプ形式になっていない.

対応規格・動作仕様

JWT (JSON Web Token / RFC 7519)JWS (JSON Web Signature)

関連する技術解説・ブログ記事

ZeroToolsのブラウザ内処理と,外部通信を利用する機能の違いやデータの取り扱いについて.

記事を読む

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

JWT三部構造とBase64URLデコードの仕組み

JSON Web Token(JWT)は,RFC 7519で定義されているクレームベースのデータ表現手法であり,認証や認可のプロセスで広く活用されています.JWTは「ヘッダー(Header)」「ペイロード(Payload)」「署名(Signature)」という3つの独立したセグメントで構成され,それぞれがドット(.)で連結された文字列として表現されます.

当ツールに入力された文字列は,まずこのドットを区切り文字として3つのセグメントに分割されます.分割された最初の2つのセグメント(ヘッダーとペイロード)には,RFC 4648で規定されるBase64URLエンコードが施されています.一般的なBase64とは異なり,Base64URLではURLに含めた際に問題となる「+」や「/」といった文字を「-」や「_」に置き換え,末尾のパディング文字(=)を省略する仕様となっています.

このツールは,Base64URL固有の文字の置換を標準的なBase64の文字セットへ戻し,必要に応じてパディングを補完した上でデコード処理を実行します.デコードされたバイナリデータからUTF-8の文字列を抽出し,JSONオブジェクトとしてパースすることで,トークンの内部構造を可視化します.

この処理により,開発者はエンコードされた難読な文字列から,プログラムが実際に読み取るJSONデータを瞬時に確認することができます.なお,3つ目のセグメントである署名部分は,バイナリのハッシュ値などをBase64URLエンコードしたものですが,これはテキストのJSONではないため,デコードせずにそのままの文字列として表示を分離しています.

第2章

ペイロードに格納される登録クレームの役割

デコードされたペイロード内には,トークンの実体となるデータが「クレーム」というキーと値のペアで格納されています.RFC 7519では,相互運用性を高めるために「登録クレーム(Registered Claims)」と呼ばれる標準的なキー名が定義されています.代表的なものとして,発行者を示すiss(Issuer),対象ユーザーを示すsub(Subject),想定される受信者を示すaud(Audience)などが挙げられます.

これらのクレームは,システム間で認証コンテキストを共有するために使用されます.例えば,APIサーバーがトークンを受け取った際,issを確認して信頼できる発行元からのトークンであるかを判別したり,audを確認して自システム宛てのトークンであるかを確認したりします.

当ツールのペイロード表示機能は,これらのJSON構造を階層的に整形し,視覚的なインデントとハイライトを適用することで,各クレームのキーと値を素早く把握できるよう設計されています.

ただし,JWTのペイロードは単にBase64URLでエンコードされているだけであり,データ自体が暗号化されているわけではありません.つまり,トークンを取得した第三者は,デコードツールを使用するだけでペイロードの全内容を閲覧可能です.そのため,ペイロード内にパスワード,マイナンバー,クレジットカード番号などの機密情報を含めることは,セキュリティ上の深刻な設計ミスとなります.

開発者は,JWTの中身が常に可読であることを前提としたデータ設計を行う必要があります.

第3章

exp(有効期限)クレームの表示とタイムスタンプ解析の限界

登録クレームの中でも,時間に関連するexp(Expiration Time),nbf(Not Before),iat(Issued At)は,トークンのライフサイクルを制御する重要な要素です.これらはすべて,1970年1月1日午前0時(UTC)からの経過秒数を示すUNIXエポック秒の整数値として記録されています.

当ツールでは,ペイロード内にexpクレームが存在する場合,その数値を現在の日時フォーマットに変換し,有効期限の目安として表示する補助機能を備えています.具体的には,トークン内のexpの数値と,ツールを実行しているユーザーの「端末時計(ブラウザのローカル時刻)」とを単純比較し,現在時刻がexpを超過しているかどうかを計算します.

超過していない場合は「exp未経過」,超過している場合は「期限切れ」として視覚的な目安を提供します.

しかし,この機能はあくまで開発時の利便性を目的とした簡易的な表示に過ぎません.実際のサーバー環境では,ネットワークの遅延やサーバー間の時計のズレを考慮し,数分程度の許容時刻差(clock skew)を設けた厳密な時刻比較が行われます.当ツールではそうしたサーバー側の時計やclock skewの考慮,およびnbfクレームの開始時刻判定,トークンの失効リスト照合などは行いません.

したがって,当ツール上で「exp未経過」と表示されたとしても,それは「有効トークンであること」を判定・証明するものではない点に注意が必要です.

第4章

署名(Signature)の構造と署名検証との明確な違い

JWTの3つ目のセグメントである署名(Signature)は,トークンの改ざんを防ぐ目的で付与されるデータです.RFC 7515(JSON Web Signature: JWS)の仕様に基づき,ヘッダーとペイロードを特定のアルゴリズムで計算した値が格納されます.

ヘッダーのalgクレームがHS256(HMAC SHA-256)であれば,サーバーとクライアントで共有する秘密鍵を用いたハッシュ値が計算され,RS256であれば,秘密鍵を用いたRSA署名が付与されます.

当ツールでは,ドットで分割された3つ目のセグメントを「署名部分」として抽出し,画面上に表示します.これにより,トークンに署名データが付随している構造であることを視覚的に確認できます.しかし,当ツールが提供するのはこの「署名文字列の表示」までであり,その署名が正しいかどうかの「署名検証」は一切行いません.

署名を正しく検証するためには,計算に使用された秘密鍵や公開鍵が必要となります.当ツールは検証機能を持たないため,ユーザーに秘密鍵の入力を求めることはありません.したがって,表示されたヘッダーやペイロードが改ざんされていないこと(真正性)を保証するものではなく,algクレームの仕様の隙を突いた攻撃の検知なども行いません.

トークンの改ざん検知や信頼性の確認は,必ずバックエンドのサーバーサイドで,適切なJWTライブラリと厳重に管理された鍵を用いて実装する必要があります.

第5章

デコード処理のブラウザ内実行とデータ取り扱いの注意点

開発やデバッグの過程で,発行されたJWTの内容を確認する作業は頻繁に発生します.このツールは,そうした日常的なデータ確認をスムーズに行うためのユーティリティです.このツールのデコード処理はブラウザ内で行うように設計されており,JavaScriptを用いてローカルのメモリ上でBase64URLの変換とJSONのパースを実行します.

APIを介さずクライアントサイドで処理を実行することにより,即座に画面にパース結果が反映されるレスポンスの速さを実現しています.

ただし,ツールの処理がブラウザ内で完結しているからといって,実運用のトークンを無造作に扱うことは推奨されません.本番環境で発行されたアクセストークンは,APIへのアクセス権を持つ重要な認証情報です.画面共有ツールを使用したミーティング中に実運用トークンをペーストして画面に映してしまったり,コピーしたトークンがクリップボード管理ツールに長期保存されたり,共有PCのブラウザに履歴として残ったりすることで,ツール外の要因からトークンが漏洩するリスクが存在します.

そのため,デコードの確認には原則としてローカルの開発・テスト環境で発行されたトークンを使用する運用を徹底してください.

第6章

テスト環境における安全なデバッグ手順とツールの活用

API開発やOAuth 2.0 / OpenID Connectの連携テストにおいて,当ツールを安全かつ効果的に活用するための手順を整理します.第一に,フロントエンドとバックエンドの通信で生じた認証エラーの原因を探る際,当ツールでテスト環境のトークンをデコードし,想定したペイロード構造になっているかを確認します.

配列やネストされたオブジェクトが正しくJSONとしてシリアライズされているか,キー名にタイポがないかを視覚的にチェックすることで,実装ミスを早期に発見できます.

第二に,トークンの生成ロジックを修正した際は,本ツールで生成されたテストトークンを読み込み,ヘッダーのalgやtypが期待通りに設定されているかを確認します.特に,ライブラリのバージョンアップ等によって意図せずヘッダーの仕様が変わっていないかを確認する用途に適しています.

第三に,本番環境のインシデント調査等でどうしても実際のトークン構造を把握する必要がある場合は,実トークンそのものではなく,構造のみを模倣したダミートークンを生成してツールに入力するか,当ツールのデコード機能と同じ処理を行うCLIスクリプトをローカルのセキュアなターミナル上で実行することを検討してください.

当ツールは,真正性の保証や脆弱性診断を行うセキュリティツールではなく,Base64URLとJSONの構造を素早く可視化する「プレビューア」としての役割に特化しています.この特性と限界を正確に理解し,バックエンドでの堅牢な署名検証の実装と組み合わせることで,安全なWebアプリケーション開発の効率化に貢献します.

よくある質問(FAQ)

A.
いいえ,当ツールはBase64URLのデコードとJSONの構造表示のみを行います.秘密鍵や公開鍵を用いた署名検証,改ざん検知,トークンの真正性確認には対応していません.署名検証が必要な場合は,バックエンドの専用ライブラリをご利用ください.
A.
当ツールでは真正性の保証や有効トークンの判定は行いません.exp(有効期限)の表示も,トークン内の数値と閲覧している端末の時計を単純比較しているだけであり,サーバー側の正確な時刻や許容時刻差(clock skew)を考慮した厳密な検証ではありません.
A.
一般的なJWT(JWS)のペイロードは暗号化されておらず,Base64URLでエンコードされているだけです.デコードすれば誰でも内容を閲覧できるため,実運用のトークンにはパスワードなどの機密情報を含めないように設計する必要があります.
A.
このツールのデコード処理はブラウザ内で行う設計ですが,実運用のトークンはシステムへのアクセス権限を示す重要な認証情報です.共有端末の使用,画面共有中の表示,クリップボードの履歴など,ツール外の要因による漏洩に十分ご注意ください.テスト用のトークンを使用することを強く推奨します.
A.
いいえ,このツールはJWEの復号機能を提供していません.ペイロード自体が暗号化されているJWE形式のトークンを入力した場合,通常のJSONペイロードとしてデコード表示することはできません.