メインコンテンツへスキップ
Supplemental Signals は Enterprise のお客様向け機能であり、アタックプロテクション アドオンをリクエストする必要があります。詳細については、Auth0 Sales にお問い合わせください。

開始する前に

Actions で Akamai Supplemental Signals を使用するには、以下を行う必要があります。
Akamai で Supplemental Signals を使用するように設定したら、それらのシグナルで提供されるデータを Auth0 Actions で使用できます。

Action トリガーでサポートされるSupplemental Signals

トリガーSupplemental Signalオブジェクトイベントオブジェクト
Login
  • akamaiBot
  • akamaiUserRisk
event.authentication.riskAssessment.supplemental.akamai
Pre-User Registration
  • akamaiBot
  • akamaiUserRisk
event.authentication.riskAssessment.supplemental.akamai
Post-User Registration
  • akamaiBot
  • akamaiUserRisk
event.authentication.riskAssessment.supplemental.akamai
Send Phone Messageなし該当なし
Post-Challenge
  • akamaiBot
  • akamaiUserRisk
event.authentication.riskAssessment.supplemental.akamai
Post-Change Password
  • akamaiBot
  • akamaiUserRisk
event.authentication.riskAssessment.supplemental.akamai
Credentials Exchangeなし該当なし

Supplemental Signal オブジェクトのスキーマ

akamaiBot オブジェクトと akamaiUserRisk オブジェクトには、認証フローのカスタマイズに使用できる複数のプロパティが含まれています。
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.');
        //This will revoke session cookies to deny login.
        api.session.revoke('Session revoked, User risk score is greater than 90.');
    }
};

api.session.revoke メソッドを使用すると (api.access.deny メソッドとは異なり) 、ユーザーがアプリケーションを再読み込みした場合でも、認証リクエストとともに Akamai Supplemental Signals が送信され、post-login Action フローがトリガーされることを保証できます。
akamaiBot.score プロパティに基づいて MFA を強制する例を次に示します。

MFA を強制する

この Action は 2 つの処理を実行します。
  1. app metadata を更新する: score プロパティが指定した値を超えた場合、そのセッションで MFA が必要であることを記録します。
  2. MFA を要求する: score プロパティが指定した値を超えた場合、またはそのセッションで MFA が必要であることを示す記録が app metadata にある場合は、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});
  }
};

app metadata をクリーンアップする

この Action は、ユーザーが MFA を正常に完了した後、セッション固有の MFA 情報を app metadata から削除します。
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);
  }
};