現在、アクションを使ったリフレッシュトークンはプライベート早期アクセスの段階であり、エンタープライズプランのお客様が利用できます。この機能へのアクセスは、担当の技術アカウント管理者(TAM)を通じてリクエストできます。Auth0のリリース段階については、「製品のリリース段階」をお読みください。
- event.refresh_token :
creation
、expiry dates
、associated clients
、resource servers
、device
のコンテキストなどの関連情報と、ブラウザーベースのフローにsession_id
を提供します。 - api.refreshToken :セッションを取り消すか、有効期限日を変更することで、既存のリフレッシュトークンを管理することができます。
event.refresh_token
オブジェクトを使用すると、last_exchange_at
プロパティを確認し、現在のトランザクションに関してリスクを評価することができます。event.refresh_token
オブジェクトをevent.authentication
など、他のイベントオブジェクトと組み合わせることもできます。
- イベントオブジェクト:フレッシュトークンのイベントオブジェクトとプロパティについて説明します。
- APIオブジェクト:フレッシュトークンのAPIオブジェクトとメソッドについて説明します。
アクションでリフレッシュトークンを取り消す
api.refreshToken
オブジェクトを使用して、既存のリフレッシュトークンの有効期限日をリセットするか、リフレッシュトークンを取り消すことができます。
これらのオブジェクトの詳細については、以下をご確認ください。
イベントログの取り消しを監視する
ポストログインの api.refreshToken.revoke(reason) メソッドを使用すると、トランザクションに関したリスクに対処することができます。このメソッドでは以下を行うことができます。api.refresh_token(reason)
メソッドを使用したい場合は、event.refresh_tokenのプロパティを必ず定義してください。アクションでリフレッシュトークンの有効期限日を変更する
リフレッシュトークンの取り消しを示すsrrt
イベントコード
- Auth0で現在のリフレッシュトークンのトランザクションを無効にする
- 403 HTTPステータスコードを返して、現在のトランザクションを拒否する
session_id
属性に認証済みセッションへの参照が含まれます。
- api.refreshToken.setExpiresAt(Date) は、特定のリフレッシュトークンに新しい絶対ライフタイムを定義できるようにします。
- api.refreshToken.setIdleExpiresAt(Date) は、特定のリフレッシュトークンに新しい非アクティブタイムアウトを設定できるようにします。
- 特定ユーザーのグループメンバーシップまたはプロファイル
- リスク評価
- アクションの実行中に使用できる他の動的条件
制限事項
これらのメソッドを使用すると、以下を基に、リフレッシュトークンのライフタイムと非アクティブポリシーを動的にカスタマイズすることができます。api.refreshToken.setExpiresAt(absolute)
メソッドとapi.refreshToken.setIdleExpiresAt(idle)
メソッドを使用すると、発行前にリフレッシュトークンの有効期限を定義したり、リフレッシュトークン交換フロー中にリフレッシュトークンに既存の有効期限を変更したりできます。api.refreshToken.setExpiresAt(absolute)
メソッドとapi.refreshToken.setIdleExpiresAt(idle)
メソッドは、リフレッシュトークン有効期限のデフォルト設定を最大値として使用し、有効期限のないリフレッシュトークンを有効期限のあるリフレッシュトークンに変換します。api.refreshToken.setIdleExpiresAt(idle)
は、リフレッシュトークンの非アクティブタイムアウトを設定します。正常な交換でこのメソッドが呼び出されない場合には、アプリケーション設定にあるリフレッシュトークンのライフタイムを使って、非アクティブタイムアウトが上書きされます。session_id
)プロパティが含まれます。この日付よりも前に発行されたリフレッシュトークンには、null
値を持つこのプロパティが含まれます。
ポストログインAPIメソッドのapi.refreshToken.revoke(reason)
がリリースされる前に発行されたリフレッシュトークンには、event.refresh_token.device
情報は含まれません。
ユースケース:リフレッシュトークンを取り消す
無期限のリフレッシュトークンや未交換のリフレッシュトークンには、event.refresh_token.last_exchanged_at
プロパティは含まれません。
ImpossibleTravelによるトークンの取り消し
セキュリティ上の理由から、非アクティブタイムアウトと絶対タイムアウトを、リフレッシュトークンの有効期限日で定義されたアプリケーションのフレッシュトークンの設定を超えた値には設定できません。有効期限日を超えた日付を設定しようとすると、APIメソッドはリフレッシュトークンの有効期限まで更新し、テナントログに警告イベント(w
)を記録します。
アクションを使用すると、リスク検出を構成して、リフレッシュトークンをapi.refreshToken.revoke(reason)
メソッドとイベントオブジェクトを使って取り消すことができます。
のアセスメントオブジェクトを使用すると、ユーザーがImpossibleTravelを示す場所からログインしているか判定し、そのトランザクションに関連付けられた現在のリフレッシュトークンを取り消すことができます。
- ユーザーの組織
- ユーザーのAuth0接続
- 特定ユーザーのグループメンバーシップまたはプロファイル
- リスク評価
IPバインディングによるリフレッシュトークンの取り消し
event.authentication.ImpossibleTravel.code
がimpossible_travel_from_last_login
プロパティに等しいか検証されます。true
の場合、アクションはapi.refreshToken.revoke()
を呼び出し、以下を行います。
ポストログインオブジェクトプロパティのevent.refresh_token.device.initial_ip
とevent.request.ip
を使って、その期間、リフレッシュトークンのトランザクションに同じIPアドレスが維持されるようにします。このシナリオでは、IPの変更はすべて危険だとみなされ、新しいリフレッシュトークンが要求されます。
- ユーザーの組織
- ユーザーのAuth0接続
- 「403 access_denied」のエラー応答を返す
- 「 revoked due to impossible travel(impossible travelによりトークンが取り消されました)」というエラーを発行する
ユースケース:リフレッシュトークンの有効期限日をカスタマイズする
この例では、アクションの開始時点で、event.refresh_token.device.initial_ip
とevent.request.ip
のプロパティを使ってIPアドレスの追跡が確認されます。アクションは、トランザクションのIPアドレスが変更されたかを判定します。true
の場合、アクションはapi.refreshToken.revoke()
を呼び出し、以下を行います。
組織を基にリフレッシュトークンの絶対有効期限日をカスタマイズする
または、制限の少ないアクションでは、event.request.asn
プロパティとevent.refresh_token.device.initial_asn
プロパティを追跡し、IPの変更でなく、ASNの変更を監視することができます。
アクションを使用すると、リフレッシュトークンのライフタイムと非アクティブの日付をカスタマイズすることができます。具体的には、特定のトランザクションについて、リフレッシュトークンのアイドルTTLと絶対有効期限日を設定することができます。これには、ポストログインのapi.refreshToken.setExpiresAt(Date)
メソッドとapi.refreshToken.setIdleExpiresAt(Date)
メソッドを使用します。
以下のポストログインオブジェクトプロパティを使用すると、現在のトランザクションに関連付けられた組織について、リフレッシュトークンのライフタイムを定義することができます。
- トランザクションを拒否する
- リフレッシュトークンを取り消す
メンバーシップロールを基にリフレッシュトークンの非アクティブタイムアウトをカスタマイズする
organization_refresh_token_lifetime
よりも長いかが検証されます。リフレッシュトークンのライフタイムの方がが長い場合、アクションはリフレッシュトークンの有効期限が「リフレッシュトークンの作成
日+organization_refresh_token_lifetime
」と等しくなるように設定します。
ポストログインオブジェクトプロパティのevent.refresh_token.last_exchanged_at
と event.refresh_token.idle_expires_at
を使用すると、ユーザーのメンバーシップロールを基に、リフレッシュトークンの非アクティブタイムアウトを定義することができます。