トークンスタジオ
Privacy FirstJWT/JWK/JWKSを検査・生成します。
Header
Payload
Signature
JWTとは何ですか?
JSON Web Token(JWT)は、当事者間で転送されるクレームを表現するためのコンパクトでURL安全な手段です。JWTはドットで区切られた3つのBase64URLエンコード部分から構成されます:ヘッダー(アルゴリズムとタイプ)、ペイロード(クレーム)、署名です。署名はトークンが改ざんされていないことを保証します。JWTはWeb APIにおける認証や情報交換によく使用されます。標準クレームには、sub(サブジェクト)、iss(発行者)、aud(オーディエンス)、exp(有効期限)、nbf(Not Before)、iat(発行日時)、jti(JWT ID)が含まれます。
JWTアルゴリズム
HS256/384/512は、SHA-2と共有シークレットを使ったHMACを使用します — シンプルですが、両者が同じ鍵を保持する必要があります。RS256/384/512は、RSA PKCS#1 v1.5非対称署名を使用します — サービスが公開鍵のみを必要とするマイクロサービスアーキテクチャに最適です。ES256/384/512は、NIST曲線を使ったECDSAを使用し、同等のセキュリティでRSAよりも小さな署名を実現します。PS256/384/512は、確率的な方式であるRSA-PSSを使用し、最新のシステムではRS*よりも推奨されます。
JWKとJWKS
JSON Web Key(JWK)は、暗号鍵を表現するJSON構造です。JWK Set(JWKS)は、keysプロパティの下にJWKの配列を含むJSON構造です。サービスは、既知のURL(例:/.well-known/jwks.json)でJWKSを公開し、クライアントが帯域外の鍵交換なしにJWT検証用の公開鍵を取得できるようにします。JWKS内の鍵はkid(Key ID)によって識別され、JWTヘッダーがこれを参照します。
セキュリティのベストプラクティス
exp、nbf、iss、audクレームは必ずサーバー側で検証してください。本番環境では絶対にalg: noneアルゴリズムを使用しないでください — すべての署名保護が失われます。複数のサービスがトークンを検証する必要がある場合は、HMACよりも非対称アルゴリズム(RS*、ES*、PS*)を優先してください。鍵は定期的にローテーションし、各トークンの署名に使用された鍵を識別するためにkidを使用してください。秘密鍵は安全に保管し、絶対にバージョン管理にコミットしないでください。長期間有効なJWTではなく、短い有効期限とリフレッシュトークンを使用してください。