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

JWTトークン:仕組みとセキュリティベストプラクティス

JSON Webトークンの深掘り - 構造、署名の仕組み、避けるべき一般的なセキュリティの間違い。

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

JWTの構造

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

1. ヘッダー

{

"alg": "HS256",

"typ": "JWT"

}

2. ペイロード(クレーム)

{

"sub": "1234567890",

"name": "John Doe",

"exp": 1516242622,

"role": "admin"

}

標準クレーム

  • iss(発行者)
  • sub(主体)
  • exp(有効期限)
  • iat(発行日時)

3. 署名

ヘッダーとペイロードを秘密鍵で署名します。

JWT認証の仕組み

1. ユーザーが資格情報をサーバーに送信

2. サーバーが資格情報を検証しJWTを作成

3. JWTがクライアントに送信される

4. クライアントが後続のリクエストにJWTを含める

5. サーバーがJWT署名を検証しリクエストを処理

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

すべきこと:

  • 短い有効期限を設定
  • すべてのJWT送信にHTTPSを使用
  • すべてのクレームを検証
  • HttpOnlyクッキーにトークンを保存

すべきでないこと:

  • ペイロードに機密データを保存
  • 本番環境でnoneアルゴリズムを使用
  • localStorageにJWTを保存
  • 有効期限のないトークンを作成

JWTデコーダーツールでJWTトークンをデコード・検査できます。