DevToolPal
日本語

JWT 生成・署名ツール

JSON ペイロードから JSON Web Token を作成し、HS256/384/512、または PEM 秘密鍵による RS・PS・ES アルゴリズムで署名します。

ローカルで処理、アップロードなし

オプション

シークレットの形式

ペイロード(JSON)

0 文字 · 0 B

JWT

0 文字 · 0 B

機能

JSON Web Token(JWT、RFC 7519)は、ドットで区切られた 3 つの部分からなるコンパクトで URL セーフな文字列です。署名アルゴリズムを示すヘッダー、クレームを含むペイロード、そして前の 2 つに対する署名です。API は JWT をベアラートークンとして、ID プロバイダーは ID トークンとして使います。

このツールは JSON ペイロードからトークンを作成して署名します。対応アルゴリズム:

  • HS256・HS384・HS512:共有シークレット(テキストまたは Base64)による HMAC。
  • RS256・RS384・RS512 と PS256・PS384・PS512:PEM 秘密鍵による RSA 署名。
  • ES256・ES384・ES512:EC 秘密鍵による ECDSA 署名。

使い方

  1. ペイロードを JSON オブジェクトで書くか、サンプルをクリックします。
  2. アルゴリズムを選び、入力欄の上部にシークレットを入力するか PEM 秘密鍵を貼り付けます。
  3. 必要に応じて iat を現在時刻にしたり、有効期限(exp)や鍵 ID などの追加ヘッダーを加えたりします。
  4. 出力からトークンをコピーします。JWT デコーダーに貼り付ければ中身を確認できます。

例

シークレットを your-256-bit-secret にして次のペイロードを HS256 で署名すると、jwt.io でおなじみのサンプルトークンになります:

{"sub":"1234567890","name":"John Doe","iat":1516239022}

ヘッダーは常に {"alg":"HS256","typ":"JWT"} の後に追加したフィールドが続く形で書かれ、alg は選んだアルゴリズムに必ず一致します。

ベストプラクティス

exp クレームでトークンの有効期間を短くし、iss と aud を設定して、あるサービス向けのトークンが別のサービスで再利用されないようにします。サーバー側では、許可するアルゴリズムを明示したうえで署名を必ず検証し、none は拒否してください。HMAC のシークレットは長くランダムにし、少なくともハッシュ出力と同じ長さ(HS256 なら 32 バイト)にします。

よくある質問

› どのアルゴリズムを選ぶべきですか?

サーバーが検証に使うものを選んでください。HS256 は共有シークレットを使い、1 つのシステム内でよく使われます。RS256 と ES256 は秘密鍵で署名し、誰でも公開鍵で検証できるので、複数のサービスが確認するトークンに向いています。ES256 の署名は RS256 よりはるかに短くなります。

› どの秘密鍵形式に対応していますか?

PEM 形式の PKCS#8(BEGIN PRIVATE KEY)、PKCS#1 RSA(BEGIN RSA PRIVATE KEY)、SEC1 EC(BEGIN EC PRIVATE KEY)に対応しています。暗号化された鍵は、先にパスフレーズなしでエクスポートしてください。ES256・ES384・ES512 では、それぞれ P-256・P-384・P-521 曲線の鍵が必要です。

› JWT のペイロードは秘密ですか?

いいえ。ヘッダーとペイロードは Base64URL でエンコードされているだけで、トークンを持つ人なら誰でも読めます。署名が防ぐのは改ざんであって、読み取りではありません。パスワードなどの秘密情報を JWT のペイロードに入れないでください。

› シークレットや秘密鍵は保存・送信されますか?

いいえ。署名はブラウザ内の Web Crypto API で行われます。シークレットや鍵はこのページのメモリ上にだけあり、保存もアドレスバーへの書き込みも共有リンクへの追加もされません。それでも、管理していない Web ページに本番環境の鍵を貼り付けるのは避けてください。