JWT 生成ツール(HS256 / HS384 / HS512)
使い方
アルゴリズムを選択し、ヘッダー・ペイロード・秘密鍵を入力すると、署名付き JWT が生成されます。ヘッダーの `alg` フィールドは選択したアルゴリズムに自動同期されます。`alg: none` を選ぶと署名なしのトークンが生成されます(デバッグ用、本番では使用しない)。
JWT の構造
JWT は `header.payload.signature` の 3 つの Base64URL 部分をドットで結合した形式です。ヘッダーには使用するアルゴリズムが、ペイロードには任意のクレーム(`sub`, `iat`, `exp` など)が、署名には HMAC や RSA / ECDSA で生成された署名値が入ります。本ツールは HMAC ベース(HS256/384/512)に対応します。RS256 / ES256(公開鍵署名)は秘密鍵管理の都合で対応していません。
活用シーン
- ローカル開発時にテスト用 JWT を作りたい場面
- 認証フローの動作確認(モック JWT で API を叩く)
- ペイロードの形を試行錯誤しながら作る
- 既存の JWT デコーダ(本サイトの jwt-decoder)と組み合わせて検証する
- 勉強用に「JWT が実際にどう構成されるか」を試す
セキュリティ注意
署名処理は Web Crypto API でブラウザ内完結しますが、**本物の本番シークレット**を画面共有中に入力するのは避けてください(画面共有経由で第三者に見える可能性があります)。また、`alg: none` を許容する JWT 検証実装は脆弱性の典型例なので、本番では必ず特定のアルゴリズムに固定して検証することを推奨します。
よくある質問
トークンを生成すると秘密鍵はどこかに送信されますか?
いいえ。署名は Web Crypto API でローカルに実行され、秘密鍵もペイロードもブラウザの外には出ません(アップロード・ログ記録・保存は一切ありません)。唯一の注意点は画面共有で、送信はされなくても画面上に秘密鍵が見えてしまうため、その場面で本物の本番シークレットを貼り付けるのは避けてください。
対応している署名アルゴリズムは何ですか?
HMAC ベースの HS256・HS384・HS512 と、署名なしトークン用の `none` に対応しています。RS256 や ES256 などの公開鍵アルゴリズムは、ブラウザツールで秘密鍵を扱うリスクがあるため意図的に対象外にしています。
`alg: none` オプションは何をするもので、使っても安全ですか?
署名部分が空の署名なしトークンを生成するもので、デバッグ専用です。本番では絶対に使わないでください。`alg: none` を許容する検証実装はよく知られた脆弱性なので、検証は必ず特定のアルゴリズムに固定してください。
ヘッダーの `alg` フィールドは自分で設定する必要がありますか?
いいえ。ヘッダーの `alg` フィールドは選択したアルゴリズムに自動同期されるため、常に実際の署名と一致し、不整合のリスクがありません。
iat や exp などの標準クレームをペイロードに追加できますか?
はい。ペイロードは自由形式の JSON なので、sub・iat・exp といった登録済みクレームを自由に含められます。生成時に iat へ現在時刻を自動で入れるトグルも用意されています。