JWT生成ツール|トークン作成
HS256でJWTトークンを生成します。ヘッダー・ペイロード・秘密鍵を指定して生成。
JWT生成ツール|トークン作成とは
JWTトークン(JSON Web Token)をHS256署名でブラウザ上で生成できる無料開発ツールです。ペイロードのJSONと秘密鍵を入力するだけで即時生成できます。JWT認証の学習・開発環境でのテストトークン作成・APIデバッグに活用できます。
使い方
- 1ペイロードのJSONを入力エリアに入力してください(例: {"sub": "user123", "exp": 1735689600})。
- 2秘密鍵(シークレット)を入力してください。開発環境用のテスト用キーを使用してください。
- 3「JWTを生成」をクリックするとHS256署名のJWTトークンが即時生成されます。生成されたトークンをコピーして使用してください。
メリット・特徴
- HS256(HMAC-SHA256)署名のJWTトークンをブラウザ上で即時生成
- exp・iat・sub・issなど標準クレームを含む任意のペイロードJSONに対応
- テスト用JWTトークンの素早い生成でAPI開発・デバッグ作業を効率化
- 入力データはブラウザ内のみで処理、サーバーに送信されない
- 登録不要・インストール不要の完全無料ツール
- JWT decoder(デコードツール)と組み合わせてトークンの検証にも活用可能
JWTの仕組みと構造——ヘッダー・ペイロード・署名
JWT(JSON Web Token)はWebアプリの認証・認可で最も広く使われるトークン形式です。その構造と動作原理を理解することで、安全で適切なJWT実装が可能になります。
JWTの3層構造
JWTは「ヘッダー.ペイロード.署名」の3部分をBase64URLエンコードしてドット(.)で連結した文字列です。ヘッダーには署名アルゴリズム(alg: "HS256")とトークンタイプ(typ: "JWT")が含まれます。ペイロードには認証情報(ユーザーID・権限など)とメタデータ(有効期限・発行日時など)をJSONで記述します。署名は秘密鍵を使ってヘッダーとペイロードから生成され、改ざん検出に使われます。
HS256(HMAC-SHA256)署名の仕組み
HS256は対称鍵アルゴリズムで、同じ秘密鍵で署名と検証の両方を行います。HMAC(Hash-based Message Authentication Code)とSHA-256ハッシュ関数を組み合わせて署名を生成します。署名者(サーバー)と検証者(同じサーバー)が同じ秘密鍵を持つ必要があるため、マイクロサービス間の信頼や外部への公開には向いていません。外部に公開する場合はRS256(公開鍵で検証できる非対称アルゴリズム)が適しています。
JWT標準クレーム(RFC 7519)一覧
RFC 7519で定義された主要な標準クレームを紹介します。iss(Issuer)はトークン発行者、sub(Subject)はトークンの主体(ユーザーID等)、aud(Audience)は対象受信者、exp(Expiration Time)はUnixタイムスタンプ形式の有効期限、nbf(Not Before)は有効開始時刻、iat(Issued At)は発行日時、jti(JWT ID)はトークンの一意識別子です。標準クレーム以外にも、アプリ固有のカスタムクレームをペイロードに追加できます。
JWT認証の実装パターンとセキュリティ設計
JWTを使った認証システムを正しく実装するためのパターンとセキュリティ上の注意点を解説します。誤った実装はセキュリティ上の重大な脆弱性につながるため、ベストプラクティスを理解することが重要です。
アクセストークンとリフレッシュトークンの使い分け
セキュリティとユーザービリティを両立するため、有効期限の短いアクセストークン(15分〜1時間)と有効期限の長いリフレッシュトークン(1日〜30日)を組み合わせる「ダブルトークン」パターンが広く使われています。アクセストークンはAPIリクエストのAuthorizationヘッダーに付けて送り、期限切れになったらリフレッシュトークンで新しいアクセストークンを取得します。
JWTをどこに保存すべきか
ブラウザでのJWT保存場所にはlocalStorage・sessionStorage・HttpOnly Cookieの3択があります。localStorageはXSS攻撃でトークンが盗まれるリスクがあります。HttpOnly Cookieに保存するとJavaScriptからアクセスできないためXSSに強くなりますが、CSRF対策が必要になります。SameSite=StrictまたはSameSite=LaxのCookieフラグを使うことでCSRFリスクを大幅に軽減できます。
JWTの無効化(ログアウト)の難しさと対策
JWTはステートレスなためサーバー側でトークンを管理しません。これが利点である一方、「発行したトークンを無効化する」のが難しいという欠点でもあります。対策としてはexpを短く設定する・トークンのブラックリストをRedis等に保持する・jtiクレームを使って使用済みトークンを追跡する、などの方法があります。セキュリティ要件に応じて適切な方法を選択してください。
よくある質問(FAQ)
- 本番環境で使用しても安全ですか?
- 開発・テスト用途のみにご使用ください。実際のサービスで使用している本番の秘密鍵をブラウザベースのツールに入力しないでください。本番環境のJWTトークンはサーバーサイドのライブラリ(jsonwebtoken/Node.js、PyJWT/Python、java-jwt/Java等)を使用して生成してください。
- HS256以外のアルゴリズムに対応していますか?
- このツールはHS256(HMAC-SHA256)に対応しています。RS256・RS384・RS512(RSA署名)やES256(楕円曲線署名)などの非対称アルゴリズムには対応していません。非対称アルゴリズムは秘密鍵・公開鍵のペアが必要なため、サーバーサイドでの生成を推奨します。
- exp(有効期限)などの標準クレームは使えますか?
- はい。ペイロードのJSONオブジェクトに "exp"(有効期限・Unixタイムスタンプ)・"iat"(発行日時)・"sub"(サブジェクト)・"iss"(発行者)・"aud"(対象者)などのJWT標準クレーム(RFC 7519)を追加できます。
- JWTとは何ですか?
- JWT(JSON Web Token)はJSONベースのオープンスタンダード(RFC 7519)で、2つの当事者間で情報を安全に伝達するためのコンパクトなトークン形式です。ヘッダー(alg・typ)・ペイロード(クレーム)・署名の3部分をBase64URLエンコードしてドットで連結した構造です。Webアプリの認証・API認可・情報交換に広く使われています。
- JWTのペイロードはBase64でデコードできますか?
- はい。JWTのペイロード部分(ドット区切りの2番目の部分)はBase64URLエンコードされているだけで暗号化されていません。誰でもデコードして内容を確認できます。そのためペイロードに機密情報(パスワード・クレジットカード番号等)を含めてはいけません。秘密鍵による署名は「改ざんされていないこと」の証明に使われます。
- JWTの有効期限(exp)はどのように設定しますか?
- 有効期限はペイロードのexpクレームにUnixタイムスタンプ(エポック秒)で設定します。例えば1時間後なら現在のUnixタイムスタンプ + 3600を指定します。JavaScriptでは Math.floor(Date.now() / 1000) + 3600 で1時間後のタイムスタンプを取得できます。このツールのUnixタイムスタンプ変換ツールを使って特定の日時のエポック秒を確認してください。
不具合や動作がおかしい点を見つけたら教えてください。
不具合報告はこちら →