メインコンテンツへスキップ
Auth0 Supplemental Signals は現在 Early Access 段階です。この機能を使用することにより、Okta の Master Subscription Agreement に定められている該当の無料トライアル条件に同意したものとみなされます。Auth0 製品のリリース段階について詳しくは、Product Release Stages を参照してください。
開始する前にActions で Akamai の補足シグナルを使用するには、次を行う必要があります。
Akamai をリバースプロキシとして構成し、Auth0 に補足シグナルを送信するように設定している場合、それらのシグナルで提供されるデータを Auth0 Actions で使用できます。

Action トリガーごとのサポートされる補助シグナル

トリガー補助シグナル オブジェクトイベント オブジェクト
ログイン
  • akamaiBot
  • akamaiUserRisk
authentication.riskAssessment.supplemental.akamai
Pre-User Registrationなし該当なし
Post-User Registrationなし該当なし
Send Phone Messageなし該当なし
Post-Challengeなし該当なし
Post-Change Passwordなし該当なし
Credentials Exchangeなし該当なし

補助シグナルオブジェクトのスキーマ

akamaiBotakamaiUserRisk オブジェクトには、認証フローをカスタマイズするために使用できる複数のプロパティが含まれています。
akamaiBot
object
akamaiUserRisk
object

ユースケース

akamaiUserRisk.score プロパティに基づいてセッションを失効させる方法の例を次に示します。
exports.onExecutePostLogin = async (event, api) => {
  const userRiskHeader = event.authentication?.riskAssessment?.supplemental?.akamai?.akamaiUserRisk;
  if (userRiskHeader?.score && userRiskHeader?.score >= 90) {
        console.log('User is deemed high risk.');
        // これによりセッション Cookie が失効し、ログインが拒否されます。
        api.session.revoke('Session revoked, User risk score is greater than 90.');
    }
};

api.access.deny メソッドではなく api.session.revoke メソッドを使用している点に注意してください。revoke メソッドを使用すると、ユーザーがアプリケーションをリフレッシュした際に、Akamai の補足シグナルが認証リクエストと共に送信され、ポストログインの Action フローがトリガーされることが確実になります。
akamaiBot.score プロパティに基づいて MFA(多要素認証)を強制する方法の例を次に示します。

MFA を強制する

この Action は次の 2 つのタスクを実行します。
  1. アプリ メタデータ を更新する: score プロパティが指定した値を超えた場合、そのセッションで MFA が必要であることを記録します。
  2. MFA を必須にする: score プロパティが指定した値を超えた場合、またはそのセッションで MFA が必要であることを示すレコードがアプリ メタデータに存在する場合に、MFA を強制します。
exports.onExecutePostLogin = async (event, api) => {
  const userRiskHeader = event.authentication?.riskAssessment?.supplemental?.akamai?.akamaiUserRisk;

  if (userRiskHeader?.score && userRiskHeader?.score >= 90) {
    console.log(`Setting app metadata for session id: ${event.session?.id}`);
    api.user.setAppMetadata(`mfa_required_${event.session?.id}`, true);
  }

  if (userRiskHeader?.score && userRiskHeader?.score >= 90 ||
      event.user.app_metadata[`mfa_required_${event.session?.id}`]) {
        console.log(`Requiring MFA FOR Session id: ${event.session?.id}`);
        api.multifactor.enable('any', {allowRememberBrowser: false});
  }
};

アプリ メタデータをクリーンアップする

この Action は、ユーザーが MFA を正常に完了した後に、アプリ メタデータからセッション固有の MFA 情報を削除します。
exports.onExecutePostLogin = async (event, api) => {
  const mfaMethod = event.authentication?.methods.find((method) => {
    return method.name === 'mfa';
  });

  if (mfaMethod) {
    console.log(`Removing MFA requirement for session id: ${event.session?.id}`);
    api.user.setAppMetadata(`mfa_required_${event.session?.id}`, undefined);
  }
};