Secure Steady
JWT トークン - JWT(JSON Web Token) の使い方・オプション・サンプル

JWT トークン - JWT(JSON Web Token)

JSON ベースのトークン形式。署名により改ざんを検知できるが、適切に運用しないとセキュリティリスクになる。

概念図

JWT(JSON Web Token) diagram

実例

JWT ヘッダの例

bash
{ "alg": "HS256", "typ": "JWT" }

JWT ペイロードの例

bash
{ "sub": "1234567890", "name": "Alice", "iat": 1516239022 }

JWT の構造

JWT は 3 つのパーツをドット(.)で連結した文字列です。

  1. ヘッダ: アルゴリズム(alg)とトークンタイプ(typ
  2. ペイロード: クレーム(ユーザー情報や有効期限など)
  3. 署名: ヘッダ + ペイロードを秘密鍵で署名したもの

各パーツは Base64URL エンコードされています。

ペイロードは暗号化されていないため、機密情報を含めてはいけません。

セキュリティ上の注意点

  • alg: "none" 攻撃: アルゴリズムに none を指定して署名検証をスキップさせる攻撃。ライブラリ側で none を拒否すること
  • 秘密鍵の管理: HS256 の場合、弱い秘密鍵は辞書攻撃で破られる
  • 有効期限(exp)の設定: 必ず exp クレームを含め、短い有効期限を設定する
  • トークンの失効: JWT は自己完結型のため、発行後に無効化するにはブラックリスト管理が必要

関連トピック