Auth0にはアクセストークンとリフレッシュトークンの他にセッションの有効期限も設定できます。セッションの有効期限の知識がなく、「リフレッシュトークンの有効期限超えてるのになんでログインできてるんだ」となったので備忘録
アクセストークンの有効期限
- Applications -> APIs -> 該当API -> Token Expiration & Token Expiration For Browser Flows で設定可能
- これは単純にアクセストークンの有効期限
- デフォルトは86400秒(24時間)
リフレッシュトークンの有効期限
- Applications -> Applications -> 該当Applications -> Refresh Token Expirationで設定可能
- リフレッシュトークンはアクセストークンの有効期限が超えたときに新たにアクセストークンを取得するときに使用する。
- デフォルトは期限なし
- リフレッシュトークンを使用したトークン取得が行われた場合、Monitoring -> Logs でDescriptionに
Successful Refresh Token exchange
という文言が入ったログが出る。
セッションの有効期限
- Tenant Settings -> Advanced -> Login Session Managementで設定可能
- デフォルトは4320分(72時間)
- Silent Authenticationで使用される。Silent Authenticationについてはリンクを参照。ざっくり言うと画面遷移をせずにログインを実行してアクセストークンを取得する。
- Silent Authenticationが行われた場合、Monitoring -> Logs でDescriptionに
Successful Silent authentication
という文言が入ったログが出る。
ログイン後に再度トークンを取得するときの流れ
-
有効期限がアクセストークン < セッション < リフレッシュトークンの場合
- アクセストークン有効期限が切れたら、リフレッシュトークンでのトークン取得が行われる。リフレッシュトークンの有効期限が切れていた場合は再度ログイン画面からのログインが必要。
-
有効期限がアクセストークン < リフレッシュトークン < セッションの場合
- アクセストークンの有効期限が切れたら、リフレッシュトークンでのトークン取得が行われる。リフレッシュトークンの有効期限が切れていた場合、Silent Authenticationが行われる。セッションの有効期限も切れていた場合は再度ログイン画面からのログインが必要。
まとめ
基本はデフォルト通りの アクセストークン < セッション < リフレッシュトークン にする。
参照
https://dangerous-animal141.hatenablog.com/entry/2021/06/08/220637
https://auth0.com/docs/tokens/refresh-tokens/refresh-token-rotation
https://auth0.com/docs/authorization/configure-silent-authentication