JWTジェネレーター
カスタムヘッダー、ペイロード、秘密鍵で署名付きJWTを生成。HS256、RS256、ES256に対応。
JWTとは何ですか?
JWT(JSON Web Token、RFC 7519)は、コンパクトなJSONオブジェクトとしてパーティ間で情報を安全に送信するためのオープン標準です。Header.Payload.Signatureの3つの部分をドットで区切って構成されます。
JWTの一般的な用途は何ですか?
JWTは認証(シングルサインオン)、API認可、安全な情報交換に広く使用されています。ログイン後、サーバーがJWTを発行し、クライアントは後続のリクエストでそのトークンを提示して身元を証明します。
HS256、RS256、ES256はどうやって選びますか?
HS256は共有シークレットを使用し最速で、単一サービスに適しています。RS256はRSA鍵ペアを使用し、マルチサービスアーキテクチャに向いています。ES256は楕円曲線鍵を使用し、短い署名で高いセキュリティを提供します。
JWTのクレームとは何ですか?
クレームはペイロード内の情報です。登録クレームにはiss(発行者)、sub(件名)、exp(有効期限)、aud(対象者)があります。公開クレームはIANAに登録可能で、プライベートクレームは当事者間のカスタムフィールドです。
JWTの検証方法は?
ヘッダーをデコードしてアルゴリズムを取得し、適切な鍵(HMACは共有シークレット、RSA/ECDSAは公開鍵)で署名を検証します。exp、iss、audのクレームも確認してください。
ブラウザでJWTを生成するのは安全ですか?
はい、このツールはWeb Crypto APIを使用しています。キーとトークンはブラウザから送信されません。データはサーバーに送信されません。
エンコーディングと署名の違いは何ですか?
エンコーディング(Base64)はデータを送信可能な形式に変換するだけで、誰でもデコード可能です。署名は暗号学的ハッシュを作成し、トークンが改ざんされていないことを証明します。
JWTを暗号化することはできますか?
はい、JWE(JSON Web Encryption)はペイロードの内容を暗号化します。標準JWT(JWS)は完全性のみを保証し、ペイロードはトークンを持つ誰でも読み取り可能です。
JWTのセキュリティベストプラクティスは?
常に短い有効期限を設定してください。HMACには強力でランダムなシークレットを使用。RSA/ECDSAの秘密鍵は安全に保管。ペイロードに機密データを入れない。本番環境ではHTTPSを使用。
JWTとセッション認証の違いは何ですか?
JWTはステートレスで、サーバーがセッションデータを保存しないため、マイクロサービスやクロスドメインに適しています。セッションはサーバー側の保存が必要ですが、即時取り消しが可能です。
JWTはログアウトやセッション管理に向いていますか?
JWTは設計上ステートレスなので、ログアウトにはブラックリストや短命トークンとリフレッシュトークンの組み合わせなど追加の仕組みが必要です。短寿命のアクセストークン(例:15分)の使用を推奨します。
リフレッシュトークンの仕組みは?
API呼び出しに短寿命のアクセストークン(JWT)を使用し、より長寿命のリフレッシュトークンで新しいアクセストークンを取得します。アクセストークンが期限切れになると、クライアントはリフレッシュトークンを送信して新しいJWTを取得します。
「none」アルゴリズムとは?
「none」アルゴリズムはJWTが署名されていないことを意味します。テスト目的のみで使用してください。多くのライブラリはセキュリティのためデフォルトで無効化しています。
JWTにサイズ制限はありますか?
JWTに固定サイズ制限はありませんが、HTTPヘッダーで送信されるため4KB以内に収めるべきです。ペイロードは最小限に抑え、必要なクレームのみを含めてください。