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デコーダーを使用して、トークンを検査・検証できます。