JWT認証実装で考慮すべきセキュリティ要件
JWT
セキュリティ
認証
JWT認証を実装する際に考慮すべきセキュリティ要件の網羅的なチェックリスト。
1. ライブラリとアルゴリズム
- 最新の JWT ライブラリを使用(golang-jwt/jwt/v5 など)
- 署名アルゴリズムを HS256 に限定
- none アルゴリズムを明示的に拒否
- アルゴリズム混同攻撃への対策を実装
2. トークン検証
- トークンサイズの上限設定(8KB程度)
- 有効期限の検証
- 署名の検証
- クレーム構造の検証
3. シークレットキー管理
- 最低32文字以上の長さを要求
- 環境変数で管理(ハードコード禁止)
- 定期的なローテーション推奨
4. トークン処理
- Bearer トークンの大文字小文字を区別しない処理
- ヘッダーとCookieの両方からトークン取得可能
- 型安全なクレーム処理(カスタムクレーム構造体)
5. Cookie設定
- HttpOnly: 必須(XSS攻撃対策)
- Secure: HTTPS環境で必須
- SameSite: CSRF対策として適切に設定
- Domain: 適切なスコープ設定
- MaxAge: 適切な有効期限設定
6. エラーハンドリング
- エラー情報の漏洩防止
- 一貫したエラーレスポンス
- タイミング攻撃への対策
7. ログとモニタリング
- 不正なトークン使用の記録
- 認証失敗パターンの監視
- 異常なアクセスパターンの検出
- セキュリティイベントのログ記録
8. レート制限
- 認証失敗時の再試行制限
- IPアドレスベースの制限
- ブルートフォース攻撃対策
9. 追加のセキュリティ機能
- リフレッシュトークンの実装検討
- トークンのブラックリスト機能
- JTI(JWT ID)による重複防止
- トークンのスコープ制限
10. 環境別設定
- 開発環境と本番環境で異なる設定
- 本番環境では厳格なセキュリティ設定
- 開発環境では利便性も考慮