JWT: Token has expired
JWTトークンの有効期限が切れた場合のエラー
概要
JSON Web Token(JWT)の有効期限(exp クレーム)が切れた場合に発生するエラーです。認証フローの再実行やトークンのリフレッシュが必要です。
エラーメッセージ
jwt.exceptions.ExpiredSignatureError: Signature has expired
または
JsonWebTokenError: jwt expired
原因
- 有効期限切れ: トークンのexp時刻を過ぎた
- 時刻のずれ: サーバー間の時刻同期の問題
- リフレッシュ忘れ: トークンの更新が行われていない
- 設定ミス: exp クレームが過去の時刻
解決策
1. トークンの有効期限設定
| |
2. トークン検証
| |
3. リフレッシュトークンフロー
| |
4. フロントエンドでの自動リフレッシュ
| |
5. Python での実装
| |
6. 時刻ずれの許容
| |
7. トークンのブラックリスト
| |
8. セッション付きJWT
| |
9. トークンのペイロード確認
| |
10. セキュリティベストプラクティス
| |
よくある間違い
- localStorageにトークンを保存(XSS脆弱性)
- リフレッシュトークンをクライアントに露出
- トークンの有効期限が長すぎる
- ログアウト時にサーバー側でトークンを無効化しない
関連エラー
Security の他のエラー
この記事は役に立ちましたか?