JWTジェネレーター
独自のJSONクレームから署名済みJSONWeb Tokenを作成します。共有シークレットを使うHS256、HS384、HS512、RSA秘密鍵を使うRS256〜PS512、対応するEC鍵を使うES256〜ES512、またはPEMかJWK形式で指定するEd25519鍵を使うEdDSAを選択できます。iat、exp、kidヘッダーを追加でき、joseライブラリで署名します。コンパクトトークンは、デコード済みのヘッダーとペイロードと並べて表示されます。
よくある質問
どの署名アルゴリズムを使用できますか?
共有シークレットではHS256、HS384、HS512、RSA秘密鍵ではRS256、RS384、RS512、PS256、PS384、PS512、EC秘密鍵ではP-256、P-384、P-521の鍵を使うES256、ES384、ES512、Ed25519秘密鍵ではEdDSAを使用できます。選択したアルゴリズムはalgヘッダーに記録され、typは常にJWTに設定されます。
ペイロードには何を入力すればよいですか?
クレームを含むJSONオブジェクトを入力してください。たとえば、sub、name、iss、aud、または任意のカスタムメンバーを指定できます。JWTのペイロードはJSONオブジェクトでなければならないため、配列、文字列など、オブジェクト以外の値は受け付けません。クレームの順序と値は入力したとおりに保持されます。
HMACシークレットはどのように読み込まれますか?
HS256、HS384、HS512では、シークレットは前後の空白を取り除いた後、UTF-8テキストとして使用されます。シークレットがバイナリの場合は、バイト列をbase64urlで指定した{"kty": "oct", "k": "..."}のようなJWKとして貼り付けると、デコードされたバイト列が使用されます。公開鍵をHMACシークレットとして使うのはよくある誤りのため、HMACアルゴリズムではPEM鍵を受け付けません。
HS256シークレットの長さはどのくらい必要ですか?
RFC 7518では、ハッシュ出力と同じ長さ以上の鍵が求められます。そのため、HS256では32バイト、HS384では48バイト、HS512では64バイトが必要です。テスト用トークンを再現できるよう、このツールでは短いシークレットでも署名できますが、本番用シークレットには、たとえばパスワードジェネレーターで生成した、長くランダムな値を使用してください。
RSA、EC、EdDSAでは、どの秘密鍵形式を使用できますか?
暗号化されていないPEM秘密鍵(PKCS #8(BEGIN PRIVATE KEY)、PKCS #1(BEGIN RSA PRIVATE KEY)、SEC1(BEGIN EC PRIVATE KEY)形式)、またはdメンバーを含む秘密JWKを貼り付けてください。暗号化されたPEMファイルとOpenSSH秘密鍵は読み込めません。鍵はアルゴリズムに適合している必要があります。たとえば、ES384にはP-384鍵が必要で、RSA鍵は少なくとも2048ビット必要です。
iatとexpはどのように設定されますか?
発行時刻オプションがオンの場合、ペイロードにiatクレームがすでに含まれていなければ、iatには現在時刻が設定されます。有効期限が0秒を超える場合、expには現在時刻に指定秒数を加えた値が設定され、ペイロード内のexpは置き換えられます。有効期限が0の場合、expは追加されず、ペイロード内にexpがあればそのまま保持されます。
kidフィールドは何に使いますか?
空でない鍵IDはkidヘッダーに記録され、検証側がJWKSから正しい鍵を選べるようにします。署名鍵としてJWKSを貼り付けた場合、kidはセット内でトークンの署名に使う鍵の選択にも使われます。JWKコンバーターと鍵ジェネレーターにはRFC 7638のサムプリントが表示されるため、kidに適しています。
結果には何が含まれますか?
コンパクトトークン、アルゴリズム、鍵ID、UTC形式の発行時刻と有効期限、および署名された正確なヘッダーとペイロードのJSONが表示されます。最初のブロックからトークンをコピーしてください。後でJWTデコーダーで再度デコードするか、JWT検証ツールで確認できます。
シークレットや鍵は保存されますか?
いいえ。シークレットまたは秘密鍵はトークンに署名するリクエストでのみ送信され、メモリ内で一度だけ使用されます。ログに記録されたり保存されたりすることはありません。それでも、実験にはテスト用の鍵を使い、サーバーを自分で管理していない限り、本番用署名鍵をウェブツールに貼り付けないでください。
ファイルサイズの上限はありますか?
ペイロードは65,536文字、鍵は65,536文字、kidは256文字まで指定できます。有効期限は0〜315,360,000秒(10年)です。上限を超える入力は、該当フィールド名を示すメッセージとともに拒否されます。