回転型リフレッシュトークン(Rotating Refresh Token)は、トークンのセキュリティを高めるために使用される仕組みです。この方式では、リフレッシュトークンが使われるたびに新しいリフレッシュトークンが発行され、古いトークンは無効化されます。これにより、リフレッシュトークンの漏洩による不正使用を防ぐことができます。
回転型リフレッシュトークンの仕組み
-
初回発行:
- クライアントが初回の認証を行うと、アクセストークンとリフレッシュトークンが発行されます。
-
アクセストークンの期限切れ:
- アクセストークンの有効期限が切れた場合、クライアントはリフレッシュトークンを使用して新しいアクセストークンを取得します。
-
リフレッシュトークンの更新:
- 新しいアクセストークンを発行する際、サーバーは新しいリフレッシュトークンも発行します。この新しいリフレッシュトークンがクライアントに送信されます。
- 古いリフレッシュトークンは無効化され、以降のリクエストでは使用できなくなります。
-
不正使用の防止:
- サーバーはリフレッシュトークンが一度だけ使用されることを確認することで、不正使用を防ぎます。もし古いリフレッシュトークンが再度使用された場合、不正アクセスの兆候として対処が必要です。
セキュリティの利点
- トークン漏洩の防止: 回転型リフレッシュトークンの仕組みにより、リフレッシュトークンが漏洩しても一度使われると無効化されるため、攻撃者が使用することが難しくなります。
- 監視と対策: サーバーは古いリフレッシュトークンの使用を検知できるため、セキュリティ監視の一環として不正行為を素早く特定し、対策を講じることが可能です。
実装のポイント
- トークンのストレージ: クライアントがリフレッシュトークンを適切に保管する必要があります。Webアプリケーションの場合、Secure Cookieやセキュアなストレージを使用します。
- トークンの期限管理: サーバー側では、各リフレッシュトークンに期限を設け、長期間未使用の場合は無効化されるようにします。
- データベースの更新: サーバーは、トークンの回転時に新しいリフレッシュトークンの記録をデータベースに保存し、古いトークンを無効にするためのトラッキングを行います。
この仕組みにより、セッションを安全に保ちながら、クライアントがスムーズにアクセストークンを更新できるようになります。