無料オンラインJWTデコーダー
JSON Web Tokenをブラウザ内で直接デコードして解析します。ヘッダー、ペイロード、クレームを読みやすい有効期限とともに表示します。データがサーバーに送信されることは一切ありません。
機密性の高いユーザーデータを含む本番環境のトークンは絶対に貼り付けないでください。本ツールはすべてブラウザ内で動作し、データがサーバーに送信されることはありません。
トークンインスペクター
アルゴリズム
—
タイプ
—
有効期限
—
ヘッダー
ペイロード
署名
署名の検証にはシークレットキーが必要であり、本ツールではサポートされていません。
デコード処理はすべてブラウザ内でローカルに行われます。トークンがアップロード、保存、記録されることはありません。
JWTとは?
JSON Web Token(JWT、RFC 7519)は、当事者間でクレームを表現するためのコンパクトでURLセーフな方式です。ヘッダー.ペイロード.署名という、ドットで結合された3つのBase64URLエンコード部分で構成されています。最も一般的な用途はREST APIのステートレス認証で、ログイン後にサーバーが署名済みトークンを発行し、クライアントは各リクエストでそれを送信することで、サーバーはセッション状態を保持せずに本人確認を行えます。
JWTの構造:ヘッダー・ペイロード・署名
ヘッダー
署名アルゴリズム(alg、例:HS256、RS256、ES256)とトークンタイプ(typ、ほとんどの場合JWT)を宣言します。
ペイロード
標準クレームとカスタムクレームを格納します。Base64URLエンコードされているだけで暗号化されていないため、誰でも読み取ることができます。機密情報を保存しないでください。
署名
エンコードされたヘッダーとペイロードを、シークレットキーまたは秘密鍵で署名して計算されます。整合性を証明しますが、その鍵がなければ検証できません。
一般的なJWTクレームの解説
ペイロードにはクレーム(トークンに関する記述)が含まれます。これらの登録済みクレームはJWT標準で定義されています。
| sub | Subject(サブジェクト)— トークンの主体、通常はユーザーIDです。 |
| iss | Issuer(発行者)— トークンを発行した主体を識別します。 |
| aud | Audience(対象者)— トークンが意図する受信者です。 |
| exp | Expiration Time(有効期限)— この時刻以降はトークンを拒否しなければならないUnixタイムスタンプです。 |
| iat | Issued At(発行日時)— トークンが作成されたUnixタイムスタンプです。 |
| nbf | Not Before(有効開始)— これより前にはトークンを受け付けてはならないUnixタイムスタンプです。 |
| jti | JWT ID — トークンのリプレイ防止に役立つ一意の識別子です。 |
JWTセキュリティのベストプラクティス
ペイロードには機密データを絶対に入れないでください。エンコードされているだけで暗号化されておらず、誰でも読み取れます。
必ずexpクレームを設定し、トークンの有効期間を短くして、漏洩時の影響を最小限に抑えましょう。
マイクロサービスでは非対称アルゴリズム(RS256またはES256)を優先し、シークレットを共有せずに検証できるようにしましょう。
issとaudクレームは必ずサーバー側で検証し、algがnoneに設定されたトークンは拒否してください。
トークンをURLやログファイルに露出させず、Authorizationヘッダーで送信し、安全に保管してください。
よくある質問
いいえ。標準的なJWTは署名されているだけで、暗号化されていません。ヘッダーとペイロードはBase64URLエンコードされているだけなので、トークンを持っている人なら誰でもデコードして内容を読み取れます。署名はトークンが改ざんされていないことを保証するだけで、データを隠すものではありません。機密性が必要な場合はJWE(JSON Web Encryption)を使用するか、ペイロードに機密データを入れないようにしてください。
いいえ。JWT署名の検証には、シークレットキー(HS256の場合)または公開鍵(RS256/ES256の場合)が必要で、これらは発行元のサーバーのみが保持すべきものです。本ツールは意図的に検証を行わずクライアント側でトークンをデコードするだけなので、鍵がお使いの端末から外部に出ることはありません。署名の検証は必ずサーバー側で行い、ブラウザでは行わないでください。
HS256は対称方式で、同じシークレットキーでトークンの署名と検証を行うため、検証できる当事者は誰でもトークンを偽造できます。RS256は非対称方式で、秘密鍵で署名し、別の公開鍵で検証します。公開鍵は自由に共有しつつ、署名用の秘密鍵は秘匿できるため、RS256は分散システムやマイクロサービスで推奨されます。
expクレームは秒単位のUnixタイムスタンプです。よくあるバグは、秒(10桁)ではなくミリ秒(13桁)で指定してしまうことで、有効期限が大幅に過去または未来にずれてしまいます。サーバー間の時刻のずれ(クロックスキュー)も早期期限切れの原因になり得るため、検証時には多少の許容範囲を設けましょう。上記のトークンインスペクターで、生の値の横に人が読める形式の有効期限を確認できます。