何のツールが必要ですか?

JWT デコーダ

JSON Web Token をデコードして、ヘッダーとペイロードの内容を確認します。

エンコードされたトークン
ヘッダー (アルゴリズム & トークン種別)
署名の検証
ここに署名が表示されます。
ペイロード (データ内容)
デコード処理はすべてクライアントサイド(ブラウザ内)で行われ、サーバーに送信されることはありません。

JSON Web Token (JWT) とは? なぜデコーダが必要なのか?

JSON Web Token (JWT) は、2 者間での情報の受け渡しをコンパクトかつ URL セーフに行うための標準的な手段です。JWT 内の情報は JSON オブジェクトとして表現され、デジタル署名(JWS)や完全性保護(MAC)、あるいは暗号化(JWE)によって、その内容が改ざんされていないことを保証したり、機密性を保ったりすることができます。

一般的に JWT は、ドット (.) で区切られた 3 つの部分で構成されます。ヘッダー(Header)、ペイロード(Payload)、そして署名(Signature)です。ヘッダーには署名に使用されるアルゴリズム(HS256 や RS256 など)が定義され、ペイロードには送信される実際のデータ(ユーザー ID や権限など)である「クレーム」が含まれます。そして署名によって、トークンが途中で改ざんされていないことを保証します。JWT は Base64Url でエンコードされているだけで、デフォルトでは暗号化されていません。つまり、トークンを見ることができれば、誰でもその中のデータを読み取ることができます。開発において JWT デコーダが不可欠なのはこのためです。デコーダを使用することで、エンジニアはトークンの内容を素早く検査し、正しいユーザー情報、有効期限、および権限ロールが送信されているかを確認できます。ProUtil の JWT デコーダは、機密性の高いトークンデータがデバイスから外部へ漏れるリスクのない、安全なクライアントサイド環境を提供します。

JSON Web Token を検査・デバッグする方法

1

トークンのコピー: Authorization ヘッダーやブラウザのストレージから、JWT 文字列全体をコピーします。

2

トークンの入力: エンコードされた文字列を 「エンコードされたトークン」 フィールドに貼り付けます。ProUtil の UI は長い暗号化文字列も扱えるよう最適化されています。

3

ヘッダーの即時分析: Header セクションを確認し、署名アルゴリズム(例: HS256, RS256)やトークンの種類を特定します。

4

ペイロードの検査: デコードされた Payload を確認します。ここでユーザーの属性、発行者 (iss)、対象者 (aud)、およびカスタムクレームを検証できます。

5

有効期限 (exp) のチェック: ペイロード内の 「exp」 クレームを探し、トークンがまだ有効か、あるいは期限切れかを確認します。

6

署名の構造確認: 本ツールはデコーダですが、署名部分(第 3 セグメント)を識別することで、トークンの完全性構造を理解するのに役立ちます。

7

可読性の高い整形: 整形された JSON 表示を活用して、複雑に入れ子になったクレームも簡単に読み取ることができます。

8

機密データの保護: JWT ペイロードはこのようなツールで簡単にデコードできるため、パスワードや機密性の高い秘密情報を入れないように注意してください。

9

トークンのエラー特定: トークンが途切れていたり形式が正しくない場合、エラーパネルに即座にフィードバックが表示されます。

10

プライバシー重視のデバッグ: 「コピー」 ボタンを使用して、デコードされたデータの一部を安全にローカルのドキュメントやデバッグログに移動できます。

エンジニアのための高度な JWT 検査機能

リアルタイムでの分解表示: トークンをヘッダー、ペイロード、署名の 3 つの論理的な部分に即座に分割します。
プリティプリント JSON: 生の JSON 文字列を適切なインデントと構造で自動整形し、読みやすくします。
純粋なクライアントサイド処理: トークンがサーバーに送信されることはなく、認証データのプライバシーを 100% 保証します。
自動 Base64Url デコード: JWT 標準特有の URL セーフな文字バリエーションやパディングの扱いを完璧に処理します。
主要クレームの自動識別: sub, iss, iat, exp などの標準的なクレームを強調し、迅速な監査を支援します。
エラーフィードバックシステム: 形式の正しくないトークンや無効な Base64 シーケンスに対して明確な警告を表示します。
モバイル対応のレスポンシブ設計: スマートフォンやタブレットに最適化されたレイアウトで、外出先でも認証問題をデバッグ可能。
ワンクリックコピー: デコードされたヘッダーやペイロードを個別にすばやくコピーできる専用ボタンを完備。
ダークモード最適化: ライト/ダークの開発環境を問わず美しく、見やすいプレミアムなインターフェース。
依存関係ゼロ: ブラウザのネイティブ機能のみで動作するため、最大級の速度とセキュリティを誇ります。
ステートレスな運用: データは保存されず、ページを更新するとすべての処理データが完全に消去されます。
標準規格準拠: JSON Web Token に関する RFC 7519 仕様に厳格に準拠しています。

JWT デコードの例

Example Token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoyMDI2fQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Decoded Payload
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 2026
}

JWT のセキュリティと実装における一般的なエラー

不適切なトークン形式

有効な JWT は、3 つの部分を分けるドット(.)が正確に 2 つ含まれている必要があります。そうでない場合は標準的な JWT ではありません。

Base64Url のパディングエラー

JWT では末尾の 「=」 パディングを省略します。手動で追加したり、トークンが途切れたりすると、デコードに失敗します。

機密情報の漏洩

ペイロードは暗号化ではなくエンコードされているだけなので、個人情報 (PII) や秘密情報を入れるのは重大なリスクです。

有効期限 (exp) の期限切れ

有効期限を常に確認してください。期限切れのトークンを使用すると、アプリケーションで 「401 Unauthorized」 エラーが発生します。

アルゴリズムの混乱

「alg」 ヘッダーがサーバーの期待するアルゴリズムと一致しているか確認してください。アルゴリズム置換攻撃(Algorithm Substitution Attack)を防ぐために重要です。

None アルゴリズムの脆弱性

アルゴリズムに 「none」 が指定されているトークンには注意してください。現代のシステムはこれらを拒否すべきです。

エキスパートの視点:JWT に関するよくある質問

Q.オンラインで JWT をデコードしても安全ですか?

ProUtil を使用すれば安全です。当デコーダは、クライアントサイドの JavaScript を使用してブラウザ内でのみ動作します。トークンがサーバーや第三者に送信されることはありません。

Q.HS256 と RS256 の違いは何ですか?

HS256(SHA-256 を用いた HMAC)は共通鍵(対称)アルゴリズムで、署名と検証に同じ秘密鍵を使います。RS256(SHA-256 を用いた RSA 署名)は非対称アルゴリズムで、署名に秘密鍵、検証に公開鍵を使い、分散システムではより安全です。

Q.JWT の内容を書き換えて、再署名することはできますか?

ペイロードのデコードと書き換え自体は可能ですが、そうすると 「署名(Signature)」 が無効になります。正しく再署名するには、発行者が持つ元の秘密鍵が必要です。これにより改ざんが防止されます。

Q.JWT は暗号化されていますか?

デフォルトではいいえ。標準的な JWS トークンは、Base64Url エンコードと署名のみが行われています。誰でも中身を見ることができます。内容を隠す必要がある場合は、JWE(JSON Web Encryption)を使用します。

Q.なぜ JWT は Base64 ではなく Base64Url を使うのですか?

`+` や `/` といった文字を `-` や `_` に置き換え、パディング(`=`)を取り除くためです。これにより、特別なエンコードなしで URL やファイル名の中で安全に使用できるようになります。

Q.JWT に保存してはいけないものは?

パスワード、クレジットカード番号、マイナンバーなどの極めて機密性の高い情報は決して保存しないでください。ペイロードは誰でもデコード可能であることを忘れないでください。

Q.JWT の有効期限はどう扱えばいいですか?

ペイロード内の `exp` クレームで期限を指定します。アプリケーションは現在時刻と比較し、期限を過ぎていれば拒否すべきです。「リフレッシュトークン」の使用が標準的なセッション更新の方法です。

Q.JWT における 「クレーム(Claim)」 とは何ですか?

主体(ユーザーなど)に関する主張・情報を指します。標準的なクレームには `sub` (主体)、`iss` (発行者)、`exp` (有効期限) などがあります。独自のカスタムクレームを追加することも可能です。

Q.JWT のペイロードが大きいとパフォーマンスに影響しますか?

はい。JWT は通常、リクエストのたびに Authorization ヘッダーとして送信されるため、サイズが大きいとネットワークのオーバーヘッドが増加します。必要なデータのみを含め、コンパクトに保つべきです。

Q.一度発行した JWT を無効化(失効)できますか?

JWT はステートレスなため、基本的には有効期限が切れるまで有効です。途中で無効化するには、サーバー側で「ブラックリスト」などを管理する必要がありますが、これは JWT のステートレスな利点を少し損なうことになります。

Q.JWT は LocalStorage と Cookie のどちらに保存すべきですか?

LocalStorage は簡単ですが XSS のリスクがあります。HttpOnly かつ Secure な Cookie は XSS に強いですが CSRF の考慮が必要です。用途に応じたセキュリティ設計が求められます。

Q.署名の検証を忘れるとどうなりますか?

検証を行わないと、攻撃者が `admin: true` のような勝手なクレームを含めた偽のトークンを作成でき、システムがそれを信じてしまうことになります。署名検証は JWT セキュリティにおいて最も重要なステップです。

Q.ヘッダーにある 「kid」 とは何ですか?

`kid` (Key ID) は、どの鍵で署名されたかを示す識別子です。鍵のローテーションを行っている場合や、複数の公開鍵(JWKS)を使用している場合に特に役立ちます。

Q.JWT のサイズに制限はありますか?

仕様上制限はありませんが、多くのサーバーやブラウザにはヘッダーサイズの制限(8KB〜16KB 程度)があります。これを超えるとリクエストが失敗する可能性があります。

Q.署名が 「Invalid(無効)」 と表示されるのはなぜですか?

トークンが改ざんされた、検証用の公開鍵/秘密鍵が間違っている、または転送中にデータが欠落・破損したなどが考えられます。

Q.ProUtil の JWT デコーダはオープンソースですか?

はい! ProUtil はオープンソースの開発者向けツール集です。コードは GitHub で公開されており、プライバシー重視の仕組みをどなたでもご確認いただけます。