Actionsでセッションを使用すると、認証後のリスク検出と応答機能を構成して、アプリケーションとユーザーをセッションハイジャックから保護することができます。また、2セッションライフタイム制限を動的にカスタマイズすることもできます。 これを容易にするために、ログイン後アクションには以下の2つの重要なオブジェクトがあります。Documentation Index
Fetch the complete documentation index at: https://auth0-feat-ionic-capacitor-quickstart-modernization.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
- event.session:一意の
id、created_at、expires_at、idle_expires_at、updated_atの日付、clients、authentication_atの他にも、ASN、IPやUser_agentなどのdevice情報を含む、関連情報を提供します。 - api.session: セッションを取り消すか、
expiryの日付を変更することで、既存のセッションを管理できます。
event.sessionとapi.sessionオブジェクトは両方共に、authorization codeフロー、暗黙的フロー、デバイスコードフローを含む、インタラクティブなウェブベースのフローと、およびをサポートします。
event.sessionオブジェクトを使用すると、最新のインタラクションのタイムスタンプを確認し、現在のトランザクションに関連するリスクを評価することができます。event.sessionオブジェクトをevent.authenticationやevent.requestなど、他のイベントオブジェクトと組み合わせることもできます。
api.sessionオブジェクトを使用して、既存のセッションの有効期限日をリセットするか、セッションを取り消すことができます。
これらのオブジェクトの詳細については、以下をご確認ください。
- イベントオブジェクト:セッションのイベントオブジェクトとプロパティについて説明します。
- APIオブジェクト:セッションのAPIオブジェクトとメソッドについて説明します。
Actionsでセッションを取り消す
ログイン後のapi.session.revoke(reason, options) メソッドを使用すると、トランザクションに関連するリスクに対処することができます。このメソッドには、取り消されたトランザクションにバインドされているリフレッシュトークンを保存できるオプションが含まれています。 セッションを無効にするだけでなく、このメソッドはsession-revokedのOIDCバックチャネルログアウトイニシエーターも開始し、現在のセッションにバインドされているすべてのアプリケーションからユーザーをログアウトさせ、テナントログにsession_revokedイベントを記録します。
このメソッドでは以下を行うことができます。
- Auth0で現在のセッションのトランザクションを無効にする
- 現在のトランザクションを拒否する
-
一致する
session_id値を持つ既存のセッションと関連するリフレッシュトークンすべてを取り消す- これはカスタマイズ可能なオプションであり、取り消すのではなく、リフレッシュトークンの保持を選択することもできます。この操作は非同期的に実行され、最終的には整合します。
api.session.revoke(reason,options)メソッドを使用する場合には、event.session.idプロパティが存在することを確認してください。api.access.deny()とは異なり、api.session.revoke()は現在のトランザクションを拒否し、セッションも取り消すため、第一要素の認証を再実行する必要があります。イベントログの取り消しを監視する
取り消し操作を行うと、テナントログに以下のログイベントが追加されます。 関連するsession_id属性と取り消されたセッションを示すsession_revokedイベントコード。
Actionsでセッションの有効期限日を変更する
セッションの有効期限日を変更するには、以下のポストログインメソッドを使用します。- api.session.setExpiresAt(absolute) を使用すると、特定のセッションに新しい絶対的な(後からログインが必要な)セッション有効期限を定義できます。
- api.session.setIdleExpiresAt(idle) を使用すると、特定のセッションに新しい非アクティブタイムアウトの日付を設定できます。
- ユーザーの組織
- ユーザーのAuth0接続
- 特定ユーザーのグループメンバーシップまたはプロファイル
- リスク評価
- Actionsの実行中に使用できる他の動的基準
api.session.setExpiresAt(absolute)メソッドおよびapi.session.setIdleExpiresAt(idle)メソッドを使用する場合は、event.session.idなどのevent.sessionオブジェクトのプロパティが存在することを確認してください。api.session.setIdleExpiresAt(idle)メソッドは、現在のインタラクションのセッション非アクティブタイムアウトを設定します。メソッドが再適用されない場合、後続の成功したインタラクションは、セッション非アクティブタイムアウト設定を使用して非アクティブタイムアウトを上書きします。制限事項
ログイン後APIメソッドのapi.session.setExpiresAt(absolute)とapi.session.setIdleExpiresAt(idle)がリリースされる前に発行されたセッションには、次のevent.sessionプロパティは含まれません:last_interacted_at。
ログイン後APIメソッドのapi.session.revoke(reason, options)がリリースされる前に発行されたセッションには、以下のevent.session.deviceプロパティは含まれません。
initial_ipinitial_asninitial_user_agent
w)を記録します。
ユースケース:セッションを取り消す
Actionsを使用すると、リスク検出を構成して、危険なセッションと関連するリフレッシュトークンをポストログインのapi.session.revoke(reason, options)メソッドとevent.sessionオブジェクトを使って取り消すことができます。
ASNネットワークバインディングによるセッションの取り消し
ログイン後オブジェクトプロパティのevent.session.device.initial_asnおよびevent.request.asnを使用して、その期間中セッショントランザクションと特定のautonomous system number (ASN)ネットワークをバインドして、ASNネットワークが変更した場合は再認証を要求できます。
event.session.device.initial_asnおよびevent.request.asnプロパティが、トランザクション中、同じASNネットワークを維持しているか検証するために確認が行われます。この確認に失敗すると、Actionはapi.session.revoke()を呼び出して以下を実行します。
- セッションを無効にする
- 現在のトランザクションを拒否する
- 関連するリフレッシュトークンすべてを取り消す
- 再認証を促す
IPバインディングによるセッションの取り消し
ログイン後オブジェクトプロパティのevent.session.device.initial_ipとevent.request.ipを使って、その期間、セッションのトランザクションに同じIPアドレスが維持されるようにします。このシナリオでは、IPの変更はすべて危険だとみなされ、ユーザーは再認証を促されます。
event.session.device.initial_ipおよびevent.request.ipプロパティが、トランザクション中、同じIPアドレスを維持しているか検証するために確認が行われます。この確認に失敗すると、Actionはapi.session.revoke()を呼び出して以下を実行します。
- セッションを無効にする
- 現在のトランザクションを拒否する
- 関連するリフレッシュトークンすべてを取り消す
- 再認証を促す
ユースケース:セッションの有効期限日をカスタマイズする
Actionsを使用して、セッションのアイドルと絶対的な有効期限日をカスタマイズできます。特に、ログイン後のapi.session.setExpiresAt(absolute)とapi.session.setIdleExpiresAt(idle)メソッド、およびevent.sessionオブジェクトを使用して、ある特定のセッショントランザクションの有効期限日を構成できます。
接続に基づいて絶対的なセッション有効期限時間をカスタマイズする
以下のログイン後オブジェクトプロパティを使用すると、ユーザーの認証に使用される接続に対してライフタイムを定義できます。- event.session.created_at
- event.session.expires_at
event.connection.metadata.session_timeoutを作成し、特定の接続タイムアウトを定義します。
session_timeoutが定義されているかどうか検証されます。定義されている場合、Actionはセッションのcreated日+connection_lifetimeと等しくなるようにセッションの有効期限を設定します。
Organizationに基づいてセッションの非アクティブタイムアウトをカスタマイズする
current_time変数を定義し、idle_session_timeoutという新しいOrganizationメタデータを使用して、組織に希望するアイドルタイムアウトを設定できます。
current_time+idle_organization_lifetimeと等しくなるようにセッションの非アクティブタイムアウトを設定します。