post-login Actions を使用すると、特定の認証要素または認証要素の組み合わせでユーザーに追加認証を求めるように フローをカスタマイズできます。また、ユーザーやその組織に関するコンテキスト情報を使用して、より個別化された体験を作成することもできます。たとえば、特定の組織への所属や割り当てられたユーザーロールに基づいて、特定の認証要素でユーザーに追加認証を求めるようにフローをカスタマイズできます。
- この機能では、MFA の選択フローをカスタマイズできます。MFA の登録フローをカスタマイズする場合は、Universal Login で MFA 登録をカスタマイズする を参照してください。
- Actions で MFA フローをカスタマイズできるのは、Universal Login を使用している場合のみです。
- ここで説明している一部のメソッドは Universal Login でのみ使用でき、Classic Login では使用できません。詳細については、Classic Login の MFA をカスタマイズする を参照してください。
仕組み
post-login トリガーをカスタマイズできます。
-
challengeWith: ワンタイムパスワード (OTP) など、ユーザーが認証に使用する必要がある認証要素を指定します。このメソッドはユーザーにデフォルトのチャレンジを提示し、必要に応じて別の認証方法を選択できる認証要素ピッカーへのアクセスを提供することもできます。 -
challengeWithAny: メールアドレスや OTP など、認証時にユーザーが選択できる認証要素のグループを設定します。デフォルトでは、このメソッドは特定のチャレンジではなく認証要素ピッカーをユーザーに提示します。動作条件は次のとおりです。- 2 つ以上の認証要素が指定されている場合、認証要素ピッカーが表示されます。
- ユーザーが指定された認証要素のうち 1 つにしか登録していない場合 (または指定された認証要素が 1 つ בלבדの場合) 、認証要素ピッカーはスキップされます。
- ユーザーが指定された認証要素のいずれにも登録していない場合、コマンドは失敗します。
enrolledFactors の値を使用できます。enrolledFactors は、ユーザーのアカウントに関連付けられた有効な認証要素の一覧を表します。
-
otp -
email -
push-notificationotpFallback
-
phonepreferredMethod: voicepreferredMethod: smspreferredMethod: both
-
webauthn-platform -
webauthn-roaming
event.authentication.methods には、メソッドの name が mfa に設定されている場合、type フィールドが含まれます。type は文字列で、enrolledFactors の type フィールドで使用される認証要素の値 (上記参照) と一致する値を含みます。MFA チャレンジが実行されると、methods には name:mfa のオブジェクトが含まれ、その type にはそのチャレンジで使用された認証要素が設定されます。methods が更新されるのは、Action の開始時のみです。チャレンジの結果を確認するには、フロー内の次の Action で methods にアクセスする必要があります。
詳しくは、以下のリソースを参照してください。
シーケンスフローとコンテキストフロー
challengeWith または challengeWithAny コマンドを使用すると、コンテキスト情報に基づいて、ユーザーに提示する最適なチャレンジやチャレンジの組み合わせを判断できます。具体的には、次のことが可能です。
- シーケンスフロー: 複数の異なる認証要素によるチャレンジを、特定の順序でユーザーに提示します。
- コンテキストフロー: フロー内のそれまでのチャレンジに基づいて、次にどの認証要素でユーザーにチャレンジするかを判断します。
challengeWithAny コマンドを使用して、ユーザーに SMS によるチャレンジを求めます。次に、ユーザーは Admin のユーザーロールを持ち、かつ SMS チャレンジも完了しているため、Action 2 でプッシュ通知によるチャレンジを求めます。
このフローでは、次の理由から、ユーザーにどの認証要素でチャレンジするかを判断できます。
- Action 1 の実行後にフローが一時停止します。
- ユーザーが Action 1 によって要求された MFA フローを完了します。
- Action 2 の
event.authentication.methods.typeに、直前の MFA チャレンジの情報が設定されます。 - Action 1 のコンテキスト情報を使用してフローが再開され、Action 2 が実行されます。
challengeWith および challengeWithAny を使用するコマンドには、次の固有の利点があります。
- 各コマンドの後でフローが一時停止するため、後続の Actions で利用できるユーザー情報を蓄積できます。一方、リダイレクトはフロー内の最後のコマンドとして一度だけ発生します。
challengeWithまたはchallengeWithAnyコマンドを含む各 Action の実行後に MFA がトリガーされます。リダイレクトでは、MFA はパイプライン内の最後の Action として実行されます。
challengeWith または challengeWithAny コマンドを含むものにのみ適用されます。ほかの目的の Actions には影響しません。
始める前に
テナントを準備する
- セットアップ手順の詳細については、多要素認証を有効にする を参照してください。
- 特定の認証要素の設定については、多要素認証の要素 を参照してください。

challengeWithおよびchallengeWithAnyコマンドを呼び出す Actions は、api.multifactor.enable によって有効になっているチャレンジをすべて上書きします。また、Define Policies で使用できる MFA 設定よりも優先されます。- ユーザーがアプリケーションへのアクセスを試みる際に MFA を完了できるようにするには、Require Multi-factor Auth 設定を Use Adaptive MFA または Always のいずれかに設定してください。Actions コードが実行されない場合、この設定がバックアップとして機能し、ユーザーが MFA を回避するのを防ぎます。
- コマンドでリスク評価を使用する場合は、Adaptive MFA Risk Assessment トグルを有効にし、
post-loginActions コードで event.authentication.riskAssessment を使用してください。
ユーザーを認証要素に登録する
post-login Action コマンドでチャレンジされる前に、認証手段に登録しておく必要があります。
ユーザーがサインアップした後、またはテナント内で作成された後は、 の authentication-methods エンドポイントを使用して登録情報を作成できます。また、Auth0 Dashboard のユーザープロファイルページから、ユーザーの登録を直接管理することもできます。
MFA フローをカスタマイズする
post-login Actions を作成して MFA フローをカスタマイズできます。手順とユースケース例を以下に示します。
Post-Login Action を作成する
- Auth0 Dashboard で Actions > Flows に移動し、Login を選択します。
- Add Action で Custom を選択し、Create Action をクリックします。
-
Create Action ポップアップで、以下を設定します。
- Action の名前を入力します。
- トリガーとして Login / Post-Login を選択します。
- ランタイムには Node 22 (Recommended) を使用します。
- ポップアップの内容が正しいことを確認し、Create を選択します。
-
作成後、コードエディターに
onPostExecuteが表示されます。このハンドラーにカスタムコードまたはコードサンプルを追加します。 - コードの準備ができたら、Deploy を選択します。
-
デプロイ成功の通知で Add to Flow を選択します。
- 注: 通知が閉じている場合は、コードエディターの上にある Back to Flow を選択します。
- Add Action パネルから新しい Action を Login フローにドラッグ&ドロップし、Apply を選択します。
post-login Action をテストする
- Authentication > Authentication Profile に移動します。
- Try を選択して、新しいタブでサンプルのログインプロンプトを開きます。
- 認証情報を入力し、新しい MFA フローをテストします。
使用例
現在の登録認証要素に基づいてチャレンジ方法を決定する
- ワンタイムパスワード (OTP)
- 電話番号
ロールを使用してチャレンジ方法を決定する
メタデータを使用してチャレンジ方法を判断する
- 組織メタデータ: 特定の組織で有効になっている認証要素など、組織レベルのデータ。
- ユーザーメタデータ: ユーザーのプロフィールに電話番号が関連付けられているかどうかなど、ユーザーレベルのデータ。
ユーザーが別の認証方法を選択できるようにする
additionalFactors パラメーターを含めます。このパラメーターは、すべてのユーザーに対して特定の認証要素を設定することも、enrolledFactors を使用してユーザーが希望する認証要素を選べるようにすることもできます。
特定の認証要素
次のサンプルでは、デフォルトで OTP によるチャレンジをユーザーに要求します。必要に応じて、ユーザーは Try Another Method リンクから、代わりにメールアドレスで認証できます。
Adaptive MFA を使用して、ユーザーにいつ追加認証を求めるかを判断する
Actions を使用してユーザーに追加認証を要求する
post-login トリガーを変更して MFA フローをカスタマイズできます。この例では、認証方法として phone と preferredMethod: 'both' を使用しており、ユーザーのアカウントに関連付けられている有効な MFA 認証要素を参照します。詳細については、Actions Triggers: post-login - Event Object を参照してください。
トラブルシューティング
テナントログ
| シナリオ | イベントコード | エラーの説明 |
|---|---|---|
| ユーザーに MFA が求められたものの、要求された認証要素のいずれもチャレンジに使用できません。この場合、ユーザーは MFA を完了できません。 | mfar | このシナリオでは、次のエラーメッセージが表示されます。 PostLogin Action で MFA チャレンジが使用されていますが、要求された認証要素が適切に設定されていません。MFA を実行するには、要求された認証要素を有効にし、ユーザーがそれらに登録されていることを確認してください。 |
| ユーザーに MFA が求められたものの、要求された認証要素の 1 つをチャレンジに使用できません。この場合、ユーザーは要求された別の認証要素を使用して MFA を完了できます。 | w | このシナリオでは、次の警告メッセージが表示されます。 PostLogin Action で MFA チャレンジが使用されていますが、要求された認証要素 {factor name} が適切に設定されていません。要求された認証要素を有効にし、ユーザーがそれに登録されていることを確認してください。 |
トラブルシューティング チェックリスト
-
Customize MFA factors with Actions トグルを有効にする必要があります。
- Auth0 Dashboard > Security > Multi-factor Auth に移動し、Additional Settings セクションのトグルが有効になっていることを確認します。
-
Actions で参照している認証要素が、テナントで有効になっている必要があります。
- コードを確認する: Auth0 Dashboard > Actions > Library > Custom に移動し、Actions のコードを確認します。参照しているすべての認証要素がユースケースに適していることを確認します。
- 認証要素を確認する: Auth0 Dashboard > Security > Multi-factor Auth に移動し、Actions で参照しているすべての認証要素が有効になっていることを確認します。
-
ユーザーは、Actions で参照している認証要素に登録されている必要があります。
-
特定のユーザーでエラーが発生している場合は、そのユーザーの詳細を確認し、適切な認証要素に登録されていることを確認します。Auth0 Dashboard > User Management > Users に移動し、一覧からそのユーザーの名前を選択します。
- Detail タブの Multi-factor Authentication セクションを確認して、登録状況を確認します。ユーザーが登録されていない場合は、このセクションにある Send an enrollment invitation リンクを使用できます。
- または、Raw JSON タブでユーザーの登録状況を確認することもできます。この情報は Management API を使用して取得することもできます。ただし、メール確認リンクで設定された Email 要素など、自動登録された認証手段は API には一覧表示されない点に注意してください。
- ユーザーが適切な認証要素に登録されていない場合は、Management API の authentication-methods エンドポイントを使用して登録を作成できます。ユーザーの登録状況は、Auth0 Dashboard のプロフィールページから直接管理することもできます。
-
特定のユーザーでエラーが発生している場合は、そのユーザーの詳細を確認し、適切な認証要素に登録されていることを確認します。Auth0 Dashboard > User Management > Users に移動し、一覧からそのユーザーの名前を選択します。
-
Actions がデプロイされ、Pipeline に保存されていることを確認します。
- Auth0 Dashboard > Actions > Library > Custom に移動します。一覧で Action を見つけ、ステータスが Deployed であることを確認します。別のステータスが表示されている場合は、Action を開いてコードを確認し、右上の Deploy をクリックします。
- Auth0 Dashboard > Actions > Library > Flows に移動し、Login を選択します。フローに Action が表示されていることを確認します。表示されていない場合は、Add Action パネルの Custom タブを開き、Action を Login フローにドラッグ アンド ドロップします。その後、Apply を選択します。
-
post-loginActions を最新バージョンにアップグレードしていることを確認します。- Auth0 Dashboard > Actions > Library > Custom に移動し、Action を選択します。Action が古い場合は、Action の更新を促す黄色のバナーが表示されます。バナーが表示されたら、Update を選択します。
- Deploy CLI を使用する場合は、
post-loginActions の最新バージョンをデプロイ対象として指定することもできます。詳細については、Deploy CLI を構成する を参照してください。