JWTエンコード・デコード|トークン検証
HS256、RS256、ES256、PS256などに対応したJWTエンコーダー・デコーダー・セキュリティ監査ツール。クレームの検査、署名の検証、脆弱性の検出が可能です。
JWT Encoder/Decoderとは?
JWT Encoder/Decoderは、署名済みJSON Web Tokenの作成、既存トークンのデコードによる内容の開示、そしてトークンのクレームとアルゴリズム選択に対する自動セキュリティ監査を実行するツールです。JSON Web Tokenはステートレス認証の最も一般的なフォーマットです。APIゲートウェイ、OAuthプロバイダー、またはマイクロサービスが署名済みトークンを生成し、下流のサービスは中央のセッションストアに問い合わせる代わりにその署名を検証します。何か問題が発生した場合(トークンが拒否された、クレームに予期しない値がある、署名ロジックを確認する必要がある)、カスタムコードを書かずにトークンを検査する必要があります。このツールは4つのファミリーにわたる13種類のアルゴリズムによるエンコード、リアルタイムの有効期限ステータスを持つデコード、署名検証、そして一般的な脆弱性をチェックするセキュリティ監査モードをサポートしています。すべての操作はクライアントサイドで実行されます。トークンと署名鍵がブラウザの外に出ることはありません。
> 今すぐ試す: JWT Encoder/Decoder — 無料、登録不要、100%クライアントサイド。
主な機能
- HMAC (HS256/384/512) を使用した署名済みJWTの作成 — JSONペイロードと共有シークレットを入力すると、ツールは
joseライブラリのSignJWTAPIを使用してトークンに署名します。 - RSA (RS256/384/512)、ECDSA (ES256/384/512)、RSA-PSS (PS256/384/512) のサポート — 非対称署名用にPEMエンコードされた秘密鍵を貼り付けます。ツールは
importPKCS8を使用して鍵をインポートし、それに応じて署名します。 alg: noneを使用した未署名トークン — 未署名トークンの作成はサポートされていますが、赤い警告パネルで明確にフラグが立てられます。- 標準クレームのクイック追加 — ワンクリックボタンで
iss、sub、aud、exp(+1時間)、exp(+1日)、iat、nbf、jti(crypto.randomUUID()からのランダムUUID)をペイロードエディターに挿入します。 - JWTヘッダーとペイロードのデコード — JWTを貼り付けると、解析されたヘッダーとペイロードが隣り合わせのパネルにフォーマットされたJSONとして即座に表示され、ヘッダーの下にアルゴリズムとタイプが示されます。
- 有効期限ステータスの確認 — カラーの状態バナーがトークンの有効期限切れまたは有効を表示し、リアルタイムのカウントダウン(例:「残り2時間34分」または有効期限の日時)を示します。
- 署名の検証 — シークレット(HMAC)またはPEM公開鍵(非対称)を指定すると、ツールは
jwtVerifyを呼び出して署名が暗号学的に有効であることを確認します。 - カラーコードによるJWT出力 — トークンの3つのセグメントが視覚的な識別のために赤(ヘッダー)、紫(ペイロード)、青(署名)で表示されます。
- セキュリティ監査モード —
alg: none、expの欠如、期限切れトークン、将来のnbf、非常に長い有効期限、弱いアルゴリズム、iss、aud、subクレームの欠如など、10種類の個別のセキュリティ問題についてトークンを分析します。 - バッチモード — 一度に複数のJWTトークンをデコードし(1行に1つ)、それぞれのアルゴリズムとペイロードの概要を出力します。
- 100%クライアントサイド処理 — ブラウザ内で完全に実行される
josenpmパッケージを使用します。トークンや鍵は送信されません。
JWT Encoder/Decoderの使い方
ステップ1:モードの選択
ツールの上部に3つのモードボタンが表示されます:エンコード、デコード、セキュリティ監査。モードセレクターの下の黄色のセキュリティ通知は、信頼していないツールには署名鍵を入力しないよう注意を促します。鍵素材を使用する前に確認しておくべき良い実践です。
ステップ2:JWTの作成(エンコードモード)
アルゴリズムを選択します。 グループ化されたドロップダウンに、ファミリーごとに整理された13種類のサポートアルゴリズムが表示されます:HMAC対称(HS256、HS384、HS512)、RSA非対称(RS256、RS384、RS512)、ECDSA非対称(ES256、ES384、ES512)、RSA-PSS非対称(PS256、PS384、PS512)、および未署名(none)。デフォルトはHS256です。
ペイロードを編集します。 JSONエディターにsub、name、iat(ページ読み込み時の現在のUnixタイムスタンプに設定)を含むサンプルペイロードが事前入力されます。これを直接編集します。標準クレームをタイムスタンプを手動で入力せずに挿入するためにクイック追加クレームボタンを使用します。+ exp (+1h)をクリックすると、現在のUnixタイムスタンプに3600秒を加えたexp値が挿入されます。
署名鍵を入力します。 HMACアルゴリズム(HS256/384/512)の場合、パスワードタイプの入力フィールドが共有シークレットを受け付けます。表示/非表示トグルで値を表示できます。非対称アルゴリズムの場合、複数行のテキストエリアが-----BEGIN PRIVATE KEY-----で始まるPEMフォーマットの秘密鍵を受け付けます。
「JWTをエンコード」をクリックします。 署名済みトークンがカラーコードの出力パネルに表示されます。「コピー」ボタンでトークン全体をコピーできます。「このトークンをデコード」ボタンで、即時検査のためにデコードタブに転送されます。
ステップ3:JWTのデコード(デコードモード)
トークン入力フィールドにJWTを貼り付けます。デコードは即座です。ボタンのクリックは不要です。ツールはトークンを.で分割し、カスタムのbase64UrlDecode関数を使用して各セグメントをBase64URLデコードし、ヘッダーとペイロードをJSONパースします。
トークンにexpクレームがある場合、デコードされたパネルの上にカラーのバナーが表示されます:
- チェックマーク付きの緑:「トークン有効 — 残り2時間34分」
- 警告アイコン付きの赤:「トークン期限切れ — [日時]に期限切れ」
ヘッダーとペイロードは隣り合わせのフォーマットされたJSONパネルに表示され、それぞれにコピーボタンがあります。その下に、クレーム詳細パネルがペイロードの各クレームを独自のカードにレンダリングします。タイムスタンプクレーム(exp、iat、nbf)は生のUnix整数と人間が読める日付文字列の両方を表示します。
署名と検証セクションには生の署名文字列が表示され、検証のための鍵入力が提供されます。シークレットまたは公開鍵を入力して「署名を検証」をクリックします。有効な署名の場合は結果カードが緑に、無効な場合は赤になります。
ステップ4:セキュリティ監査の実行(監査モード)
セキュリティ監査タブに切り替えてトークンを貼り付けます。トークンが解析されると結果が即座に表示されます。各結果カードには重大度バッジ(CRITICAL、WARNING、NOTE、またはINFO)、タイトル、平易な説明、および具体的な推奨事項が表示されます。監査は10の条件をチェックします:
alg: noneまたは欠如 — CRITICAL- 弱いアルゴリズム
HS1— WARNING - 対称アルゴリズムの使用 — NOTE
expクレームの欠如 — WARNING- トークンがすでに期限切れ — CRITICAL
- 1年以上先の有効期限 — NOTE
nbfクレームが将来の日付 — WARNINGissクレームの欠如 — INFOaudクレームの欠如 — INFOsubクレームの欠如 — INFO
問題が見つからない場合、INFOカードに「重大な問題は見つかりませんでした。サーバーサイドでトークンの検証を続け、署名鍵を秘密に保ってください。」と表示されます。
実践的な例
APIのテストトークンの生成
バックエンドがsub、iss、aud、expクレームを持つHS256署名済みJWTを期待している場合、エンコードモードでHS256を選択し、デフォルトペイロードから始め、+ iss、+ sub、+ aud、+ exp (+1h)を順にクリックして完全なペイロードを構築します。テストシークレットを入力してエンコードをクリックします。結果のトークンをAPIテストツールまたはHTTPヘッダーにコピーします。テストが失敗したら、トークンをデコードモードに貼り付けて、クレームが期待値と一致しているか確認します。クレーム詳細パネルで、手動でBase64デコードすることなく各値を確認できます。
「Token Expired」APIエラーのデバッグ
アプリケーションが401 Unauthorized応答を受け取っている場合、アプリケーションのAuthorizationヘッダーからトークンをデコードモードに貼り付けます。有効期限バナーが、トークンが期限切れかどうかとその時期を即座に示します。3分前に期限切れになった場合、問題はリフレッシュロジックなしの短命なトークン、またはクライアントとトークン発行者間のクロックスキューのどちらかです。クレーム詳細パネルのiatとexpクレームが、問題のウィンドウを人間が読める日付で示します。
セキュリティレビュー前のトークン監査
コードレビューまたはペネトレーションテストの前に、本番のJWTサンプルをセキュリティ監査モードに貼り付けて、すぐに修正できる問題を特定します。alg: noneまたはexpの欠如でCRITICAL結果が返ってきたトークンは、即座の対応が必要です。マルチサービスアーキテクチャでの対称アルゴリズムに関するNOTEは、レビュー中に議論する価値があります。監査出力はセキュリティ結果ドキュメントに直接コピー&ペーストできます。
ヒントとベストプラクティス
パブリックAPIには非対称アルゴリズム(RS256、ES256)を使用してください。 HMACアルゴリズム(HS256)は共有シークレットを使用します。トークンを検証できるサービスはどれでもトークンを作成することもできます。RS256またはES256では、秘密鍵の所有者だけが新しいトークンに署名できますが、任意のサービスが配布された公開鍵を使用して検証できます。セキュリティ監査モードは、この理由でHSアルゴリズムにNOTEフラグを立てます。
常にexpクレームを設定してください。 有効期限のないトークンは、明示的に失効されない限り無期限に有効です。クイック追加クレームセクションに1時間および1日の有効期限のワンクリックボタンがあります。アクセストークンは数分から数時間以内に期限切れになるべきです。長いセッションにはリフレッシュトークンを使用します。
使い捨てトークンにはjtiを使用してください。 + jti (UUID)クイック追加ボタンは、crypto.randomUUID()によって生成された一意のトークン識別子を挿入します。サーバーサイドで、この値を保存してチェックすることで、パスワードリセットやメール確認フローでのトークンリプレイ攻撃を防ぐことができます。
本番環境でnoneアルゴリズムを使用しないでください。 alg: noneが選択されるとツールは未署名トークンを作成しますが、赤い警告パネルが表示されます。セキュリティ監査モードはalg: noneをCRITICALと評価します。このアルゴリズムは、トークン検証が意図的に無効化されているテスト環境でのみ使用すべきです。
よくある問題とトラブルシューティング
「無効なJWT形式。JWTはドットで区切られた3つのパートが必要です。」 — 貼り付けた文字列にドット.がちょうど2つありません。3つのセグメントすべてを含むトークン全体をコピーしたことを確認してください。末尾の改行やスペースを持つJWTも失敗します。端のホワイトスペースはトリムされますが、埋め込まれたホワイトスペースはこのエラーを引き起こします。
「無効なBase64エンコード」 — トークンのセグメントの1つが有効なBase64URLではありません。コピー&ペースト中にトークンが切り捨てられた場合、またはその文字列が全くJWTでないOAuthからの不透明な参照トークンなど、異なるエンコード形式の場合に発生します。
「シークレットが必要」/「秘密鍵が必要」 — 署名鍵フィールドを入力せずにエンコードをクリックしました。HMACアルゴリズムは空でないシークレットが必要です。非対称アルゴリズムはPEM秘密鍵が必要です。
「無効なJSONペイロード」 — ペイロードエディターに不正なJSONが含まれています。末尾のコンマ、引用符なしのキー、またはシングルクォートの文字列を確認してください。クイック追加クレームボタンは常に有効なJSONを生成しますので、ペイロードを手動で編集した場合は構文エラーを探してください。
正しい鍵を使用しているにもかかわらず検証が無効を返す — トークンに署名したときと同じアルゴリズムを使用していることを確認してください(デコードモードが自動的に表示するヘッダーのalgフィールドに表示)。非対称検証の場合、秘密鍵ではなく公開鍵を提供していることを確認してください。
alg: noneトークンが検証で「検証できません」と表示される — 未署名トークンには検証する署名がありません。ツールはこのケースに特定の「サポートされていない」ステータスを返し、algがnoneのときに検証ボタンを無効にします。
プライバシーとセキュリティ
JWT Encoder/Decoderは、ブラウザで動作するjoseライブラリを使用してすべてのトークンと鍵をローカルで処理します。JWT、シークレット、または秘密鍵がサーバーに送信されることはありません。ツールはエンコード、デコード、または検証中にネットワークリクエストを行いません。ツールに表示される黄色のセキュリティ通知は本物です。本番環境の署名鍵については、オンラインツールを信頼しないものとして扱ってください。非本番環境の認証情報での開発とデバッグには、このツールは安全に使用できます。ブラウザのDevToolsを開き、ネットワークタブを確認することで自分で動作を確認できます。どの操作中も送信リクエストは表示されません。
よくある質問
JWTツールは無料で使用できますか? はい。アカウントやサインアップなしで完全に無料です。
オフラインで使用できますか? はい。ページが読み込まれた後、すべてのエンコード、デコード、監査がローカルで実行されます。JWT操作にネットワークリクエストは行われません。
トークンと署名鍵は安全ですか? ツールは操作中にネットワークリクエストを行いません。トークンと鍵はブラウザタブの中に留まります。ただし、ブラウザベースのツールに本番環境の秘密鍵を入力することは避けてください。テスト鍵または非本番環境の認証情報を使用してください。
どのアルゴリズムがサポートされていますか? ツールは13種類のアルゴリズムをサポートしています:HS256、HS384、HS512(HMAC)、RS256、RS384、RS512(RSA PKCS#1)、ES256、ES384、ES512(ECDSA)、PS256、PS384、PS512(RSA-PSS)、およびnone(未署名)。暗号化操作はjoseライブラリが処理します。
元のシークレットなしで署名を検証できますか? いいえ。署名の検証には、署名シークレット(HMAC)または対応する公開鍵(非対称)が必要です。デコード(ヘッダーとペイロードの読み取り)には鍵は不要で、即座に動作します。
秘密鍵はどの形式である必要がありますか? 非対称署名にはPKCS#8 PEMフォーマットの秘密鍵(-----BEGIN PRIVATE KEY-----で始まる)が必要です。joseライブラリのimportPKCS8関数がインポートを処理します。PKCS#1形式(-----BEGIN RSA PRIVATE KEY-----で始まる)はサポートされていません。openssl pkcs8 -topk8 -nocryptを使用して変換してください。
デコードモードとセキュリティ監査モードの違いは何ですか? デコードモードはトークンの内容(ヘッダー、ペイロード、クレーム、有効期限ステータス)を表示し、署名を検証できます。セキュリティ監査モードは、トークンの設計におけるセキュリティの弱点(欠落クレーム、弱いアルゴリズム、期限切れトークン、設定問題)の特定のみに焦点を当てます。どちらのモードも署名鍵は不要です。
セキュリティ監査がHS256トークンにフラグを立てるのはなぜですか? 監査は(重大度NOTE、WARNINGやCRITICALではない)HMACアルゴリズムが共有シークレットを使用していることを注記します。つまり、シークレットを持つサービスはトークンの検証も作成もできます。これはマルチサービスシステムのアーキテクチャ上の考慮事項であり、トークンのバグではありません。ノートは、1つのサービスだけがトークンを発行できるべきシステムには非対称アルゴリズムを推奨しています。
アルゴリズムを知らずにJWTをデコードできますか? はい。トークンの署名に使用されたアルゴリズムは、ヘッダーのalgフィールドに格納されています。デコードはまずヘッダーを読み取り、アルゴリズムを明らかにします。署名を検証したい場合にのみ、アルゴリズムを知る(そして鍵を持つ)必要があります。
バッチモードはどのように機能しますか? トグルボタンでバッチモードを有効にし、1行に1つのJWTを入力します。「すべて処理」をクリックして各トークンをデコードします。出力テーブルに各トークンのアルゴリズム(ヘッダーから)と完全なペイロードがJSON文字列として表示されます。不正なトークンは出力列にエラーが表示されます。
関連ツール
Base64 Encoder/DecoderはJWTセグメント内で使用されるURLセーフなBase64エンコーディングを処理します。JSON Formatterは、ネストされた構造を探索したいときにデコードされたペイロードJSONをフォーマットするのに役立ちます。Password GeneratorはHMAC署名鍵として使用するための強力なランダムシークレットを生成できます。
JWT Encoder/Decoderを今すぐ試す:JWT Encoder/Decoder