JWT Generator

HMACアルゴリズムを使用してJSON Web Tokenを作成・署名します。HS256、HS384、またはHS512を選択 — すべてWeb Crypto APIでクライアント側で署名されます。

動作方法: アルゴリズムを設定し、ペイロードJSONを編集し、秘密鍵を入力して、Generateをクリックします。トークンはWeb Crypto APIを使用してブラウザ内で完全に署名されます — 秘密鍵はデバイスを離れません。

{
  "alg": "HS256",
  "typ": "JWT"
}

署名されたJWTがここに表示されます...

JWTとは

JSON Web Token(JWT)は、2つのパーティ間でクレームを表現するコンパクトでURL安全な方法です。3つの部分がドット(.)で区切られています:ヘッダー(アルゴリズムとトークンタイプ)、ペイロード(クレーム/データ)、署名です。JWTはWebアプリケーションやAPIの認証、認可、情報交換で広く使用されています。

JWT署名の仕組み

JWT署名は暗号アルゴリズムを使用してトークンが改ざんされていないことを保証します。HMACアルゴリズム(HS256、HS384、HS512)は共有秘密鍵を使用します — 同じ鍵でトークンの署名と検証を行います。署名は秘密鍵でエンコードされたヘッダーとペイロードをハッシュ化して作成されます。秘密鍵を持つ者は誰でもトークンの真正性を検証できますが、秘密鍵なしに有効な署名を偽造することは計算上不可能です。

一般的なJWTクレーム

JWTペイロードはクレーム(キーと値のペア)を含み、ユーザーまたはトークンに関する情報が記載されます。標準クレームには以下が含まれます:iss(発行者)、sub(サブジェクト/ユーザーID)、aud(オーディエンス)、exp(有効期限、Unixタイムスタンプ)、nbf(有効期間前)、iat(発行日時)、jti(一意のトークンID)。カスタムクレームはユーザーロール、権限、メールアドレスなどのJSON互換データを保持できます。ペイロードはサイズを小さく保つ — JWTはすべてのリクエストで送信されます。

JWT セキュリティベストプラクティス

  • 常に有効期限(exp)を設定する — 有効期限のないトークンはセキュリティリスク
  • 強力な秘密鍵を使用する — HS256の場合は最低256ビット、理想的にはランダムバイト
  • ペイロードに機密データを保存しない — JWTはエンコードされており、暗号化されていません
  • HTTPSを使用する — JWTは暗号化されていない接続で傍受される可能性があります
  • サーバー上ですべてのクレームを検証する — クライアントのトークンを盲目的に信頼しない
  • 分散システムではRS256を検討する — 非対称鍵は秘密鍵の共有を回避できます