OIDC(OpenID Connect)認証において、各種トークンの有効期限を設定する際のベストプラクティスは、セキュリティとユーザー体験のバランスを取ることが重要です。各種トークン(アクセストークン、IDトークン、リフレッシュトークン)に関する推奨事項は以下の通りです。
1. アクセストークン(Access Token)
- 有効期限: 通常、短い期間(数分から1時間以内)が推奨されます。多くの場合、5分から15分程度の設定が一般的です。
- 理由: アクセストークンはAPIアクセスに使用されるため、有効期限が短い方が漏洩時のリスクが低減されます。
- 再取得: アクセストークンが期限切れになった場合は、リフレッシュトークンを使用して新しいアクセストークンを取得します。
2. IDトークン(ID Token)
- 有効期限: IDトークンは認証情報を含むため、アクセストークンよりも長め(1時間から数時間程度)に設定されることが多いです。
- 理由: IDトークンはユーザーのセッション情報を認証するために使われます。あまり短くしすぎると頻繁に再認証が必要になり、ユーザー体験が低下します。
- 注意: IDトークンの内容が不変であることを保証するために、適切な署名と検証を行うことが重要です。
3. リフレッシュトークン(Refresh Token)
- 有効期限: リフレッシュトークンは長期間(数日から数週間、あるいは数カ月)の有効期限が設定されることが多いです。
- 理由: リフレッシュトークンはクライアントが新しいアクセストークンを取得するために使用され、長期セッションを維持するために必要です。ただし、リフレッシュトークンを安全に管理し、漏洩を防ぐことが不可欠です。
- 回転型リフレッシュトークン: セキュリティを高めるために、回転型リフレッシュトークンを使用して、リフレッシュトークンが使用されるたびに新しいものを発行することが推奨されます。
ベストプラクティスまとめ
- アクセストークンの短い有効期限(例: 15分)を設定し、必要に応じてリフレッシュトークンで再取得。
- IDトークンの中程度の有効期限(例: 1~2時間)でユーザー認証情報を保持。
- リフレッシュトークンは長期間有効(例: 数週間以上)で、回転型を使用することでセキュリティを強化。
-
セキュリティ対策:
- トークンの保管はセキュリティが確保された環境で行う(例: クライアント側ではSecure Cookieやセキュアなストレージ)。
- トークンの送信時は常にHTTPSを使用する。
- アクセストークンのスコープを最小限にして、権限を限定する。
このような設定により、セキュリティとユーザー体験を両立させた適切なトークン管理が実現できます。