ポストログインを使用することで、フローをカスタマイズし、指定要素または要素のシーケンスでユーザーにチャレンジできます。ユーザーやその所属する組織に関するコンテキスト情報を使用して、より個別化された体験を作成することも可能です。例えば、特定の組織への所属やユーザーに割り当てられた役割に基づいて、特定の要素でユーザーにチャレンジするようにフローをカスタマイズすることができます。
- この機能を使用すると、MFA選択フローをカスタマイズすることができます。MFA登録フローをカスタマイズしたい場合は、「ユニバーサルログインでのMFA登録をカスタマイズする」を参照してください。
- ユニバーサルログインを使用している場合、MFAフローはActionsを使わないとカスタマイズできません。
仕組み
ポストログイントリガーを、以下の認証APIメソッドを使用して変更できます:
-
challengeWith:ワンタイムパスワード(OTP)といった要素または、ユーザー認証に使用する必要のある要素を指定します。このメソッドはデフォルトのチャレンジをユーザーに提示し、オプションでファクターピッカーを提供して、異なる認証方法を選択できるようにします。 -
challengeWithAny:メールやOTPといった、ユーザーが認証時に選択できるファクターのグループを設定します。デフォルトで、この方法は、次の条件に従って、ユーザーに特定のチャレンジではなく、ファクターピッカーを提示します:- 複数のファクターが指定された場合、ファクターピッカーはユーザーに表示されます。
- ユーザーが指定ファクターの一つ(または提供されたファクターが一つ)にのみに登録した場合、ファクターピッカーはスキップされます。
- ユーザーがどの指定ファクターにも登録していない場合、コマンドは失敗します。
enrolledFactorsの値を使用できます。enrolledFactorsは、ユーザーのアカウントに関連付けられたアクティブなファクターのリストを表します。
-
otp -
email -
push-notificationotpFallback
-
phonepreferredMethod: voicepreferredMethod: smspreferredMethod: both
-
webauthn-platform -
webauthn-roaming
event.authentication.methodsの配列には、方法の名前がmfaタイプに設定されている場合に typeフィールドが含まれています。タイプは上記のenrolledFactorsのtypeフィールドで使用されるファクター値と一致する文字列です。MFAチャレンジが実行されると、methods にはname:mfaのオブジェクトが含まれ、 typeがそのチャレンジに使用されるファクターに設定されます。methodsはアクションが開始されたときにのみ更新されます。チャレンジの結果を見るには、methodsがフローの次のアクションにアクセスされていなければなりません。
詳しくは、以下のリソースをご確認ください:
シーケンス化されたフローとコンテキストに基づくフロー
challengeWithやchallengeWithAnyコマンドを使用することで、コンテキスト情報を活用してユーザーに提示する最適なチャレンジやチャレンジのシリーズを決定できます。具体的には以下のものを活用できます:
- シーケンス化されたフロー :ユーザーに対して、特定の順序に並べた、一連の異なる要素でチャレンジを行います。
- コンテキストに基づくフロー :フロー内での以前のチャレンジに基づいて、次にどの要素でユーザーにチャレンジするかを決定します。
challengeWithAny コマンドを通じてSMSでチャレンジされます。次に、アクション2ではユーザーはプッシュ通知でチャレンジされます。これは、ユーザーがAdminロールを持っており、SMSチャレンジも完了しているからです。
このフローでは、次の理由から、ユーザーをどの要素でチャレンジするかを決定することができます:
- フローがアクション1実行後に停止するため。
- ユーザーがアクション1で促されたMFAフローを完了するため。
- アクション2の
event.authentication.methods.typeは、以前のMFAチャレンジからの情報を入力します。 - このフローは、アクション1からのコンテキストに基づく情報を使用して、 アクション2の実行に進みます。
challengeWithおよびchallengeWithAnyコマンドを使用することで、以下のような独自の利点があります:
- フローは各コマンド後に停止するため、以降のアクションで使用できるユーザー情報を蓄積できます。比較すると、リダイレクトはフローの最終コマンドとして一度だけ発生します。
- MFAは、
challengeWithやchallengeWithAnyコマンドを含む各アクションが実行された後にトリガーされます。リダイレクトの場合、MFAはパイプラインの最終アクションとして実行されます。
challengeWithまたはchallengeWithAnyを含むものにしか適用されません。その他の目的を果たすアクションに影響はありません。
開始する前に
テナントの準備をする
![[Auth0 Dashboard]>[Security(セキュリティ)]>[MFA(多要素認証)]>[Additional Settings(追加設定)]](https://mintcdn.com/generaltranslationinc/ABlkB6TUYafgJS-z/docs/images/ja-jp/cdy7uua7fh8z/2hv0ELTkkka3t230SXfxw/3df4a2e61198f7c2cfbf6864df592b39/MFA_-_Actions_toggle_-_Japanese.png?fit=max&auto=format&n=ABlkB6TUYafgJS-z&q=85&s=b29469f0ae339cba86868dcbbd5cd89a)
challengeWithコマンドとchallengeWithAnyコマンドを実行するアクションは、api.multifactor.enableを介して有効化されたチャレンジをオーバーライドします。また、[Define Policies(ポリシーを定義)] にあるMFA設定に優先します。- アプリケーションにアクセスしようとするユーザーに必ずMFAを完了させるためには、[Require Multi-factor Auth(多要素認証を要求)] を [Use Adaptive MFA(Adaptive MFAを使用する)] または [Always(常に)] に設定します。Actionsコードが実行されない場合にこの設定がバックアップとして機能し、ユーザーによるMFAの迂回を防ぎます。
- コマンドでリスク評価を使用したい場合は、[Adaptive MFA Risk Assessment(Adaptive MFAリスク評価)] を有効にして、
post-loginのActionsコードでevent.authentication.riskAssessmentを使用します。
要素にユーザーを登録する
ポストログインアクションコマンドにチャレンジされる前にAuthenticatorに登録する必要があります。
ユーザーがサインアップまたはテナントで作成された後、のauthentication-methodsエンドポイントを使用して登録を作成する必要があります。または、Auth0 Dashboardのプロファイルページから直接ユーザーの登録を管理することができます。
MFAフローをカスタマイズする
ポストログインアクションを作成して、MFAフローをカスタマイズできます。以下が、そのステップとユースケース例になります。
ポストログインアクションを作成する
- [Auth0 Dashboard]で、[アクション]>[フロー]に移動し、 [ログイン] を選択します。
- 追加アクションの下の、[カスタム] を選択し、[アクションの作成] を選択します。
-
アクションの作成のポップアップでの表示:
- アクションの名前を入力します。
- トリガーとして、 ログイン/ポストログイン を選択します。
- ランタイムには、Node 18(推奨) を使用します。
- 正確性のために、ポップアップをご確認ください。その後、 [作成] を選択します。
-
作成後、コードエディターが
onPostExecuteコマンドを表示します。カスタムコードまたはコードサンプルをコマンドに追加します。 - コマンドの準備が整ったら、[導入] を選択します。
-
成功した導入通知で [フローの追加] を選択します。
- 注意 :通知が閉じられている場合、コードエディターの上の [フローに戻る] を選択します。
- 新しいコマンドを「アクションの追加」パネルから、ログインフローにドラッグアンドドロップします。その後、[適用] を選択します。
ポストログインアクションをテストする
- [認証]>[認証プロファイル]に移動します。
- [試す] を選択し、新しいタブでログインプロンプトのサンプルを開きます。
- 資格情報を入力し、新しいMFAフローをテストします。
ユースケース例
現在の登録を使用して、チャレンジ方法を決定する
- ワンタイムパスワード(OTP)
- Phone(電話番号)
ロールを使用して、チャレンジ方法を決定する
メタデータを使用して、チャレンジ方法を決定する
- Organizationメタデータ :指定要素などのOrganizationレベルデータは、Organizationに対して有効になっています。
- ユーザーメタデータ :ユーザープロファイルに関連づいた電話番号を持っているかどうかなどの、ユーザーレベルのデータ。
ユーザーが別の認証方法を選択できるようにします。
additionalFactorsパラメーターを含めてください。このパラメーターをすべてのユーザーに対して指定の要素に設定するか、enrolledFactorsを使用してユーザーに好みの要素を選択させることができます。
指定要素
次のサンプルでは、デフォルトで、OTPでユーザーにチャレンジを行います。必要であれば、ユーザーは「他の方法を試す」リンクにアクセスし、代わりにメールで認証することができます。
Adaptive MFAを使用して、ユーザーにチャレンジを行うタイミングを決定する
アクションを使用して、ユーザーにチャレンジを行う
ポストログインを修正することで、アクションを使用して、MFAをカスタマイズできます。この例では、認証と preferredMethod:'both'のphone方法を使用します。は、ユーザーのアカウントに関連付けられたアクティブなMFA要素を示します。詳しくは、アクションのトリガー: ポストログイン - イベントオブジェクトを参照してください。
トラブルシューティング
テナントログ
| シナリオ | イベントコード | エラーの説明 |
|---|---|---|
| ユーザーに多要素認証が求められますが、要求されたいずれの要素もチャレンジに使用できません。この場合、ユーザーはMFAを完了できません。 | mfar | このシナリオでは、次のエラーメッセージが表示されます: An MFA challenge is used in a PostLogin action but the requested factors are not properly set up.To perform MFA, enable the requested factors and ensure the user is enrolled with them.(PostLoginアクションはMFAチャレンジを使用していますが、要求された要素が適切にセットアップされていません。MFAを実行するには、要求された要素を有効にして、ユーザーがそれらで登録していることを確認してください。) |
| ユーザーに多要素認証が求められますが、要求された要素の1つがチャレンジに使用できません。この場合、ユーザーは要求されている別の要素を使ってMFAを完了することができます。 | w | このシナリオでは、次のエラーメッセージが表示されます: An MFA challenge is used in a PostLogin action, but the requested factor {factor name} is not properly set up.Enable the requested factor and ensure the user is enrolled with it.(PostLoginアクションはMFAチャレンジを使用していますが、要求された要素の{factor name}が適切にセットアップされていません。要求された要素を有効にして、ユーザーがそれを使って登録していることを確認してください。) |
トラブルシューティングのチェックリスト
-
「アクションでMFA要素をカスタマイズする」 トグルを有効にする必要があります。
- [Auth0 Dashboard]>[セキュリティ]>[多要素認証]に移動し、[追加設定]セクションのトグルが有効になっていることを確認してください。
-
アクションで参照されるファクターは、テナントで有効にする必要があります。
- コードを確認する :[Auth0 Dashboard]>[アクション]>[ライブラリ]>[カスタム]に移動し、アクションコードを確認します。参照されたすべての要素が、ユースケースに適用可能であることを確認してください。
- 要素を確認する :[Auth0 Dashboard]>[セキュリティ]>[多要素認証]に移動し、アクションで参照されたすべての要素が有効になっていることを確認してください。
-
ユーザーはアクションで参照された要素に登録されている必要があります。
-
エラーが発生した場合は、対象ユーザーの詳細を確認し、適切なファクターに登録されていることを確認してください。[Auth0 Dashboard]>[ユーザー管理]>[ユーザー] に移動し、リストからユーザーの名前を選択します。
- [詳細]タブ の[多要素認証]セクションを確認し、ユーザーの登録を確認します。ユーザーが登録されていない場合、このセクションで利用可能な 「登録の招待状を送る」 リンクを使用できます。
- または、[Raw JSON(生JSON)]タブ でユーザーの登録状況を確認してください。この情報は、Management APIを使用することでも取得できます。ただし、APIには、メール認証リンクを介して設定されたメール要素のような自動登録された認証手段は表示されないことに注意が必要です。
- ユーザーが適切な要素に登録されていない場合、Management APIのauthentication-methodsエンドポイントを使用して、登録を作成できます。Auth0 Dashboardのユーザーのプロファイルページを通じて、ユーザーの登録を直接管理することもできます。
-
エラーが発生した場合は、対象ユーザーの詳細を確認し、適切なファクターに登録されていることを確認してください。[Auth0 Dashboard]>[ユーザー管理]>[ユーザー] に移動し、リストからユーザーの名前を選択します。
-
アクションが導入され、パイプラインに保存されていることを確認してください。
- [Auth0 Dashboard]>[アクション]>[ライブラリ]>[カスタム]に移動します。リストからアクションを見つけ、ステータスが 「導入済み」 になっていることを確認してください。異なるステータスが表示 されている場合、アクションにアクセスし、コードを確認したのち,右上の [導入] をクリックします。
- [Auth0 Dashboard]>[アクション]>[ライブラリ]>[フロー]に移動し、 [ログイン] を選択します。アクションがフローに表示されていることを確認してください。表示されていない場合、[アクションの追加]パネルの [カスタム]タブ にアクセスし、ログインフローにアクションをドラッグアンドドロップします。その後、[適用] を選択します。
-
ポストログインアクションが最新バージョンにアップグレードされていることを確認してください。- [Auth0 Dashboard]>[アクション]>[ライブラリ]>[カスタム]に移動し、アクションを選択します。アクションが古い場合、アクションの更新を促す黄色のバナーが表示されます。バナーが表示された場合、[更新] を選択します。
- Deploy CLIを使用する際には、
ポストログインアクションの最新バージョンを指定して導入することもできます。詳しくは、「Deploy CLIを構成する」をご覧ください。