Adaptive MFA をカスタマイズするタイミング
Adaptive MFA のカスタマイズを検討すべきなのは、ユーザーが MFA に登録済みで、かつ識別子としてメールアドレスを使用する必要がある場合に限られます。
- どの信頼度レベルで MFA をトリガーしますか?
- リスクをどのように測定しますか?
- 信頼度は Auth0 に測定させますか、それとも独自に測定しますか?
- MFA に登録されていないユーザーにどう対応しますか?
信頼度スコア
NewDevice、ImpossibleTravel、UntrustedIP の 3 つの評価の分析に基づいて、総合的な信頼度スコアを算出します。詳しくは、Adaptive MFA: 仕組みを参照してください。
各評価にはそれぞれ独自の信頼度スコアがあり、各信頼度スコアには対応するアクションがあります。
異なる信頼度スコアにおける高リスクおよび低リスクのシナリオ例を表示します。
異なる信頼度スコアにおける高リスクおよび低リスクのシナリオ例を表示します。
次の表は、
low の信頼度スコアとなる高リスクのシナリオを示しています。次の表は、
high の信頼度スコアとなる低リスクのシナリオを示しています。riskAssessment オブジェクトで利用可能なデータを使用できます。
riskAssessment オブジェクトの完全な説明、プロパティ、値については、post-login Actions トリガー riskAssessment リファレンスを参照してください。
Action の結果パターン
MFA をトリガーする Actions は、デフォルトの Adaptive MFA の動作よりも優先されます。
low のときに MFA がトリガーされます。
次の表は、Actions とデフォルトの Adaptive MFA ポリシーの動作の組み合わせごとに、どのような結果になるかを示しています。
Action テンプレート
Adaptive MFA テンプレート
api.multifactor.enableAction トリガー。これにより、ログインフローの最後に登録の処理と、設定済みの MFA チャレンジ の提示の両方を行います。- ユーザーが登録済みの認証要素を含む、
event.user.multifactorActions トリガー。
api.multifactor.enable を api.authentication.challengeWithAny() に置き換えて、ユーザーがすでに登録している認証要素で MFA チャレンジを強制します。Actions でサポート対象の認証要素を確認するには、factors パラメータをご覧ください。例:
この例では、登録状況を確認するために
event.user.multifactor ではなく event.user.enrolledFactors を使用しています。event.user.multifactor とは異なり、event.user.enrolledFactors には認証要素として email も含まれるため、メールのみを設定しているユーザーについても、登録済みの認証要素を正しく返します。MFA登録を必須にするテンプレート
event.user.multifactorを使ってユーザーがMFAに登録済みかどうかを確認し、未登録の場合は登録を求めるプロンプトを表示します。
Action のユースケース
全体の信頼度スコアが X の場合にアクションを実行する
全体の信頼度スコアが X の場合にアクションを実行する
riskAssessment.confidence プロパティを確認し、high、medium、low の定数と比較します。信頼度スコアが X より高い、または低い場合にアクションを実行する
信頼度スコアが X より高い、または低い場合にアクションを実行する
信頼度スコアは範囲ではなく離散値のため、比較演算子 (
< や > など) を使って 1 つの条件で複数の値を評価することはできません。対応したい信頼度スコアを論理的に組み合わせるには、複数の条件を使用します。たとえば、信頼度スコアが low より高い場合を判定するには、medium または high と等しいかどうかを確認します。全体の信頼度スコアが X の場合に追加の詳細を取得する
全体の信頼度スコアが X の場合に追加の詳細を取得する
riskAssessment オブジェクトはテナントログに保存されます。ログエントリを確認すると、リスク評価スコアとその判定要因 (理由) を確認できます。また、riskAssessment オブジェクトを参照して、その結果を別の場所に報告することもできます。たとえば、メールを送信したり、外部データベースにレコードを保存したりできます。特定の 評価 が特定の結果を返した場合にアクションを実行する
特定の 評価 が特定の結果を返した場合にアクションを実行する
各 評価 の詳細 (
code プロパティを含む) にアクセスするには、assessments object を使用します。カスタムの全体信頼度スコアのために 評価 を集約する。
カスタムの全体信頼度スコアのために 評価 を集約する。
各 評価 の詳細にアクセスするには、
assessments object を使用し、confidence プロパティ、code プロパティ、またはその両方を利用します。特定の 評価 が特定の結果を返した場合、現在のトランザクションをブロックしてエラーとメッセージを返す
特定の 評価 が特定の結果を返した場合、現在のトランザクションをブロックしてエラーとメッセージを返す
各 評価 の詳細 (これにより、ユーザーは
code プロパティを含む) にアクセスするには、assessments object を使用します。エラーパラメータとして UnauthorizedError オブジェクトを指定してコールバック関数を返すことで、ログイントランザクションが完了しないようブロックできます。UnauthorizedError オブジェクトでは error は常に unauthorized に設定されますが、error_message はカスタマイズできます。error と error_message パラメータを含んだ状態で、アプリケーションのコールバック URL にリダイレクトされます。Auth0 が 評価 の実行に失敗した場合でも安全に処理する
Auth0 が 評価 の実行に失敗した場合でも安全に処理する
リスク評価の実行中に何らかの障害が発生した場合、Auth0 は自動的に
low の信頼度スコアを割り当てます。この状況に対処するには、assessments object を使用して各 評価 の code プロパティを確認し、値が assessment_not_available に設定されているかどうかを確認します。