完全無料

JWT トークンを デコード

JWT(JSON Web Token)のヘッダーとペイロードをブラウザ上で即座にデコード。無料・プライベート・クライアントサイド処理でサーバーにデータは送信されません。

このツールについて

JSON Web トークン (JWT) は、RFC 7519 で定義されている、二者間でクレームを送信するためのコンパクトで URL セーフな形式です。JWT は、ヘッダー (アルゴリズムとトークン タイプ)、ペイロード (クレーム)、および署名 (信頼性の暗号化証明) の、ドットで区切られた 3 つの Base64URL エンコードされたセグメントです。ヘッダーとペイロードは JSON であり、URL の安全性を確保するために Base64URL でエンコードされています。署名は、エンコードされたヘッダーとペイロードに対していくつかのアルゴリズム (HS256、RS256、ES256 など) の 1 つを使用します。

JWT をデコードする (セグメントに分割し、それぞれを Base64 デコードする) には、シークレットは必要ありません。トークン テキストを持っている人は誰でも、そのヘッダーとペイロードを読み取ることができます。ただし、署名は秘密鍵 (HMAC) または公開鍵 (非対称) でのみ検証できます。デコードは検査のために行われます。検証は本物であることを証明するものです。

このデコーダはトークンを分割し、各セグメントを Base64 デコードし、ヘッダーとペイロードを JSON として解析し、結果を表示します。署名検証には秘密鍵または公開鍵が必要ですが、デコーダはそれを持っていないため、署名検証は試行しません。デコードされた出力は読み取り専用の検査です。トークンのデバッグには役立ちますが、アプリケーション コードでの適切な検証の代替にはなりません。

JWT をデコードする理由

認証の問題のデバッグには、ほとんどの場合、トークンの検査が含まれます。コード内では有効に見えるトークンでも、間違ったクレーム、予期しないアルゴリズム、期限切れの exp タイムスタンプ、またはオーディエンスの不一致が含まれている可能性があります。トークンをデコードすると、発行者が何を生成したかが正確に明らかになります。

統合作業中にトークンを検査することも役立ちます。サードパーティ API または ID プロバイダーに接続する場合、実際のクレーム名、形式、構造は、古い可能性のあるドキュメントに依存するのではなく、サンプル トークンをデコードすることによって最もよく理解できます。

使い方

トークンを貼り付け、解析された内容を取得します。

  1. JWT を貼り付けます: 完全なトークン (header.payload.signature) を入力領域にドロップします。デコーダは、オプションのベアラー プレフィックスの有無にかかわらずトークンを受け入れます。
  2. ヘッダーを検査する: ヘッダーには、署名アルゴリズム (alg) とトークン タイプ (typ) が表示されます。一般的なアルゴリズムは HS256、RS256、ES256 です。 alg: none に注意してください。これは署名されていないトークンを通知し、運用環境では安全であることはほとんどありません。
  3. ペイロードを検査する: ペイロードには、iss (発行者)、sub (件名)、aud (対象者)、exp (有効期限)、iat (発行日)、およびアプリケーション固有のクレームが含まれています。標準のタイムスタンプは Unix エポック秒です。
  4. 別途確認: デコーダは署名を検証しません。信頼性を確認するには、アプリケーション コード内の適切な秘密キーまたは公開キーを使用して、JWT ライブラリを通じてトークンを実行します。

一般的な使用例

技術的な詳細

JWT 形式は、ドットで結合された 3 つのセグメントです。各セグメントは、base64url エンコードされています。これは、+ と / の代わりに - と _ を使用し、場合によってはパディングが省略される、base64 の URL セーフなバリアントです。デコードするには、URL セーフな置換を元に戻し、セグメントをパディングし、base64 デコードする必要があります。

ヘッダーとペイロードはデコード後の JSON です。署名セグメントはバイナリ (生の署名バイト) であり、人間が判読することはできません。有効にするには検証キーが必要です。

RFC 7519 で定義されている共通クレーム: iss (発行者)、sub (サブジェクト識別子)、aud (対象者)、exp (Unix エポック秒としての有効期限)、nbf (not-before タイムスタンプ)、iat (issued-at タイムスタンプ)、jti (一意のトークン ID)。アプリケーション固有のクレームは任意の名前で表示できます。

ベストプラクティス

よくある質問

JWT をここに貼り付けても安全ですか?
はい。デコードは完全にブラウザ内で行われ、トークンがサーバーに送信されることはありません。ただし、JWT は認証情報です。アカウントへのアクセスを許可する可能性があるため、JWT を公開 (スクリーンショット、スタック オーバーフローの投稿などで) 共有しないでください。
このツールは JWT 署名を検証しますか?
このツールはトークンの内容をデコードして表示します。署名の検証には秘密キー (HMAC) または公開キー (RSA/ECDSA) が必要です。これらはサーバー上に残しておく必要があります。このツールは使用されているアルゴリズムを表示しますが、キーがなければ検証できません。
標準の JWT クレームは何を意味しますか?
iss = 発行者、sub = 件名 (ユーザー ID)、exp = 有効期限 (Unix タイムスタンプ)、iat = 発行日、nbf = 以前ではない、aud = 対象者、jti = JWT ID。カスタム クレームには、アプリケーション固有のデータを含めることができます。
なぜ誰でも JWT をデコードできるのでしょうか?
JWT は暗号化されず、エンコードされます。ペイロードは Base64URL でエンコードされている (暗号化されていない) ため、誰でも読み取ることができます。署名は改ざんを防止するものであり、読み取りを防止するものです。機密データ (パスワード、SSN) を JWT ペイロードに保存しないでください。
一部のトークンに署名がないのはなぜですか?
alg: none のトークンには署名がありません。これらは仕様上は有効な JWT ですが、信頼性は保証されないため、運用環境では受け入れられません。
JWTは暗号化されていますか?
標準の JWT ペイロードは署名されていますが、暗号化されていません。 JWE (JSON Web Encryption、RFC 7516) は、暗号化されたトークンの別の形式です。世に出ているほとんどの JWT は JWS (署名付きのみ) です。
私のトークンはサーバーにアップロードされていますか?
いいえ。デコードはブラウザ内で行われます。トークンはデバイスから出ません。
JWT の長さは通常どのくらいですか?
数百文字から数千文字まで。長さは、クレームの数とサイズに署名の長さを加えたもの (アルゴリズムによって異なります) によって決まります。