JWTエンコード・デコード

ヘッダー
コピー
                    {
    "alg": "HS256"
}
                
ペイロード
コピー
                    {
    "urn:example:claim": true,
    "iat": 1669056231,
    "iss": "urn:example:issuer",
    "aud": "urn:example:audience"
}
                
シークレット検証失敗
概要
Generated by AI

JWT デコーダー/エンコーダーは、JSON Web Token(JWT)処理用の開発ツールで、JWT のデコード表示、署名の有効性検証、複数のアルゴリズムを使用した新しい JWT の生成をサポートします。API 開発、認証デバッグ、トークン分析などに適しています。

JWT とは

JSON Web Token(JWT)は、当事者間で情報を安全に転送するために使用されるオープン標準(RFC 7519)です。JWT はドット区切りの3つの部分で構成されています:ヘッダー(Header)、ペイロード(Payload)、署名(Signature)。

ヘッダーにはトークンタイプと署名アルゴリズムの情報が含まれ、ペイロードには実際に転送されるデータであるクレーム(Claims)が含まれ、署名はトークンが改ざんされていないことを検証します。JWT は、Web アプリケーションの認証、シングルサインオン、API 認可などのシナリオで広く使用されています。

機能特徴

JWT を貼り付けると、ツールは自動的にデコードしてヘッダーとペイロードの JSON コンテンツを表示します。秘密鍵(対称アルゴリズム)または公開鍵(非対称アルゴリズム)を使用して署名の有効性を検証し、トークンが改ざんされていないことを確認できます。

一般的な JWT 署名アルゴリズムをサポートしており、対称アルゴリズム(HS256、HS384、HS512)と非対称アルゴリズム(RS256、RS384、RS512、ES256、ES384、ES512 など)が含まれます。

ヘッダーとペイロードの内容をカスタマイズし、署名アルゴリズムを選択し、秘密鍵または秘密鍵を入力して、標準に準拠した JWT を生成できます。有効期限の設定をサポートし、exp フィールドを自動計算します。デコードされたヘッダーとペイロードはフォーマットされた JSON として表示され、検証結果は直感的に表示されます。

使用方法

「デコード」モードに切り替えて、入力ボックスに完全な JWT 文字列を貼り付けます。ツールは自動的にデコードしてヘッダーとペイロードの内容を表示します。トークンに含まれるクレーム情報を確認し、コピーボタンをクリックして JSON コンテンツを取得します。

署名を検証する際は、デコードモードで JWT を貼り付け、ヘッダーの alg フィールドを確認して署名アルゴリズムを決定し、アルゴリズムタイプに応じて秘密鍵または公開鍵を入力します。ツールは自動的に署名を検証し、結果を表示します。

JWT をエンコード生成する際は、「エンコード」モードに切り替え、署名アルゴリズムを選択し、ペイロード内容を編集してカスタムクレームを追加し、有効期限を 2h(2時間)、30m(30分)、1d(1日)などと設定し、秘密鍵または秘密鍵を入力します。ツールは自動的に JWT を生成します。

署名アルゴリズムの説明

対称アルゴリズム(HMAC): HS256 は HMAC SHA-256 アルゴリズムを使用し、HS384 は HMAC SHA-384 を使用し、HS512 は HMAC SHA-512 を使用します。対称アルゴリズムは署名と検証に同じ鍵を使用し、サーバー側内部での使用に適しています。鍵は厳重に秘密にする必要があります。

非対称アルゴリズム(RSA/ECDSA): RS256/RS384/RS512 は RSA 公開鍵暗号化アルゴリズムを使用し、秘密鍵で署名し、公開鍵で検証します。ES256/ES384/ES512 は楕円曲線デジタル署名アルゴリズムを使用し、秘密鍵で署名し、公開鍵で検証します。非対称アルゴリズムは分散システムに適しており、公開鍵は検証のために公開配布できます。

応用シナリオ

API 開発時に JWT をデコードしてリクエストに含まれるユーザー情報と権限クレームを確認し、署名を検証してトークンが信頼できるソースから来ていることを確認します。サードパーティサービスから返された JWT を分析し、トークン構造と含まれるユーザー情報を理解します。開発環境でテスト用の JWT を生成し、異なるユーザー、権限、または有効期限をシミュレートして、アプリケーションの認証ロジックをテストします。JWT に機密情報が含まれていないか、署名アルゴリズムが安全かどうかを確認します。

使用上の推奨事項

対称アルゴリズムの秘密鍵と非対称アルゴリズムの秘密鍵は厳重に秘密にする必要があります。クライアントコード、バージョン管理システム、または公開場所に鍵を保存しないでください。対称アルゴリズムの秘密鍵の長さは、少なくともアルゴリズムのハッシュ長と一致している必要があります。非対称アルゴリズムでは、2048 ビット以上の RSA 鍵を推奨します。

JWT は短い有効期限(15分から1時間など)を設定する必要があり、トークンが盗まれるリスクを減らします。JWT のペイロードは Base64 エンコードされており、誰でもデコードして表示できるため、パスワード、クレジットカード番号などの機密情報をペイロードに保存しないでください。

JWT を受信した後は、署名の有効性を検証してトークンの改ざんを防ぐ必要があります。本番環境では、RS256 または ES256 などの非対称アルゴリズムの使用を推奨します。これにより、公開鍵の配布と鍵管理が容易になります。

注意事項

JWT はエンコードと署名であり、暗号化ではありません。誰でも Base64 デコードしてペイロードの内容を表示できます。署名はトークンが改ざんされていないことを検証するだけで、コンテンツのプライバシーを保護できません。

JWT には完全なペイロード情報が含まれており、トークンサイズが大きくなります。HTTP ヘッダーで転送する際、過度に大きい JWT はパフォーマンスの問題を引き起こす可能性があるため、ペイロードは簡潔に保つ必要があります。

JWT は一度発行されると、有効期限前に取り消すことはできません。取り消しが必要な場合は、サーバー側でブラックリストを維持する必要があり、JWT のステートレスの利点が失われます。JWT の expiat フィールドはシステムクロックに依存するため、サーバークロックの同期を確保してください。

このツールで入力された JWT と鍵はブラウザでローカルに処理され、サーバーにアップロードされませんが、本番環境の実際の鍵でこのツールを使用しないことをお勧めします。

よくある質問

JWT はデータを暗号化できますか$1 いいえ、JWT は署名とエンコードであり、暗号化ではありません。ペイロードの内容は誰でも Base64 デコードして表示できます。暗号化が必要な場合は JWE を使用してください。

署名検証が常に失敗するのはなぜですか$2 鍵または公開鍵が正しいか、アルゴリズムが JWT ヘッダーの alg フィールドと一致しているか確認してください。非対称アルゴリズムでは、正しい公開鍵/秘密鍵ペアを使用していることを確認してください。

RSA 鍵ペアを生成するにはどうすればよいですか$3 OpenSSL を使用できます:openssl genrsa -out private.pem 2048(秘密鍵)および openssl rsa -in private.pem -pubout -out public.pem(公開鍵)。

類似ツールとの比較

類似の JWT ツールには、jwt.io、JWT Debugger、online-jwt-decoder などのオンラインツールがあります。jwt.io は Auth0 が提供する最も人気のある JWT デバッグツールで、豊富なアルゴリズムと視覚化機能をサポートしています。

このツールは同様の機能を提供し、すべての処理がブラウザでローカルに完了し、サードパーティサービスに依存せず、プライバシー保護により重点を置いています。複雑な JWT 管理ニーズには、Auth0、Firebase Authentication、Keycloak などの専門的な ID 認証サービスの使用をお勧めします。

もっと見る