JWT トークン - JWT(JSON Web Token)
JSON ベースのトークン形式。署名により改ざんを検知できるが、適切に運用しないとセキュリティリスクになる。
概念図
実例
JWT ヘッダの例
bash
{ "alg": "HS256", "typ": "JWT" }JWT ペイロードの例
bash
{ "sub": "1234567890", "name": "Alice", "iat": 1516239022 }JWT の構造
JWT は 3 つのパーツをドット(.)で連結した文字列です。
- ヘッダ: アルゴリズム(
alg)とトークンタイプ(typ) - ペイロード: クレーム(ユーザー情報や有効期限など)
- 署名: ヘッダ + ペイロードを秘密鍵で署名したもの
各パーツは Base64URL エンコードされています。
ペイロードは暗号化されていないため、機密情報を含めてはいけません。
セキュリティ上の注意点
alg: "none"攻撃: アルゴリズムにnoneを指定して署名検証をスキップさせる攻撃。ライブラリ側でnoneを拒否すること- 秘密鍵の管理: HS256 の場合、弱い秘密鍵は辞書攻撃で破られる
- 有効期限(exp)の設定: 必ず
expクレームを含め、短い有効期限を設定する - トークンの失効: JWT は自己完結型のため、発行後に無効化するにはブラックリスト管理が必要
