ブログに戻る
jwt 2025-01-15

JWT トークン構造の理解

JSON Web Tokenの構造、クレーム、セキュリティについての詳細な解説。

JWT(JSON Web Token)は、当事者間で情報を安全に送信するためのオープンスタンダードです。

JWT構造

JWTはドットで区切られた3つの部分で構成されています:

xxxxx.yyyyy.zzzzz

Header.Payload.Signature

1. ヘッダー

トークンタイプと署名アルゴリズムを含む:

{

"alg": "HS256",

"typ": "JWT"

}

2. ペイロード

クレーム(ユーザーに関する記述)を含む:

{

"sub": "1234567890",

"name": "John Doe",

"iat": 1516239022,

"exp": 1516242622

}

3. 署名

トークンが改ざんされていないことを検証:

HMACSHA256(

base64UrlEncode(header) + "." +

base64UrlEncode(payload),

secret

)

標準クレーム

  • iss: 発行者
  • sub: 主体(ユーザーID)
  • aud: 対象者
  • exp: 有効期限
  • iat: 発行時刻
  • nbf: 有効開始時刻

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

1. 強力なシークレットを使用: 最低256ビット

2. 有効期限を設定: 常にexpクレームを含める

3. HTTPSを使用: HTTPでの送信禁止

4. すべてのクレームを検証: iss、aud、expを確認

5. 機密データを保存しない: ペイロードは読み取り可能

一般的なアルゴリズム

  • HS256: SHA-256付きHMAC(対称)
  • RS256: SHA-256付きRSA(非対称)
  • ES256: SHA-256付きECDSA(非対称)

JWTデコーダーを使用して、トークンを検査・検証できます。