post-login Actions を使用すると、 フローをカスタマイズして、特定の認証要素または認証要素の組み合わせでユーザーに追加認証を求めることができます。また、ユーザーやその Organizations に関するコンテキスト情報を利用して、より個別化された体験を作成することもできます。たとえば、特定の Organizations へのメンバーシップや割り当てられたユーザーロールに基づいて、特定の認証要素でユーザーに追加認証を求めるようフローをカスタマイズできます。
- この機能では、MFA の選択フローをカスタマイズできます。MFA 登録フローをカスタマイズする場合は、Universal Login で MFA 登録をカスタマイズする を参照してください。
- Actions で MFA フローをカスタマイズできるのは、Universal Login を使用している場合のみです。
- ここで説明する一部の方法は Universal Login でのみ使用でき、クラシックログインでは使用できません。詳しくは、クラシックログイン向けに MFA をカスタマイズする を参照してください。
仕組み
post-login トリガーを、以下の Authentication API メソッドで変更できます。
-
challengeWith: ユーザーが認証に使用する必要がある認証要素を指定します。たとえば、ワンタイムパスワード (OTP) などです。このメソッドは、デフォルトのチャレンジをユーザーに提示し、必要に応じて別の認証方法を選べる認証要素ピッカーへのアクセスを提供することもできます。 -
challengeWithAny: ユーザーが認証時に選択できる認証要素のグループを設定します。たとえば、email や OTP です。デフォルトでは、このメソッドは特定のチャレンジではなく認証要素ピッカーをユーザーに表示します。これは、次の条件に従います。- 2つ以上の認証要素が指定されている場合は、認証要素ピッカーがユーザーに表示されます。
- ユーザーが指定された認証要素のうち1つにしか登録していない場合 (または1つの認証要素しか指定されていない場合) 、認証要素ピッカーはスキップされます。
- ユーザーが指定された認証要素のいずれにも登録していない場合、コマンドは失敗します。
enrolledFactors の値を使用できます。enrolledFactors は、ユーザーのアカウントに関連付けられている有効な認証要素の一覧を表します。
-
otp -
email -
push-notificationotpFallback
-
phonepreferredMethod: voicepreferredMethod: smspreferredMethod: both
-
webauthn-platform -
webauthn-roaming
event.authentication.methods には、メソッド名が 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 で利用できるユーザー情報を蓄積できます。一方、リダイレクトが発生するのは、フロー内の最後のコマンドとして 1 回だけです。
challengeWithまたはchallengeWithAnyコマンドを含む各 Action の実行後に MFA がトリガーされます。リダイレクトの場合、MFA はパイプライン内の最後の Action として実行されます。
challengeWith または challengeWithAny コマンドを含むものにのみ適用されます。その他の目的の Actions には影響しません。
始める前に
テナントを準備する
- 設定手順の詳細については、Enable Multi-Factor Authentication を参照してください。
- 特定の認証要素の設定については、Multi-factor Authentication Factors を参照してください。

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 をログインフローにドラッグ&ドロップし、Apply を選択します。
post-login Action をテストする
- Authentication > Authentication Profile に移動します。
- Try を選択して、新しいタブでサンプルのログインプロンプトを開きます。
- 資格情報を入力し、新しい MFA フローをテストします。
ユースケースの例
現在の登録状況に基づいてチャレンジ方法を決定する
- ワンタイムパスワード (OTP)
- 電話
ロールを使用してチャレンジ方法を判断する
メタデータを使用してチャレンジ方法を決定する
- 組織のメタデータ: 特定の組織で有効になっている認証要素など、組織レベルのデータ。
- ユーザーのメタデータ: ユーザーのプロファイルに電話番号が関連付けられているかどうかなど、ユーザーレベルのデータ。
ユーザーが別の認証方法を選択できるようにする
additionalFactorsパラメーターを含めます。このパラメーターは、すべてのユーザーに対して特定の認証要素を指定することも、enrolledFactorsを使用してユーザーが希望する認証要素を選べるようにすることもできます。
特定の認証要素
次のサンプルでは、デフォルトでOTPによるチャレンジがユーザーに提示されます。必要に応じて、ユーザーは「別の方法を試す」リンクから、代わりにメールで認証できます。
Adaptive MFA を使用してユーザーに追加認証を求めるタイミングを判断する
Actions を使用してユーザーに追加認証を求める
post-login トリガーを変更して MFA フローをカスタマイズできます。この例では、認証方法に phone、preferredMethod に 'both' を指定しており、ユーザーのアカウントに関連付けられている有効な MFA 認証要素の両方を参照します。詳しくは、Actions Triggers: post-login - Event Object を参照してください。
トラブルシューティング
テナントログ
トラブルシューティングチェックリスト
-
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 tab の Multi-factor Authentication セクションを確認し、登録状況を確認してください。ユーザーが登録されていない場合は、このセクションにある Send an enrollment invitation リンクを使用できます。
- または、Raw JSON tab でユーザーの登録状況を確認することもできます。この情報は Management API から取得することも可能です。ただし、メール確認リンクで設定された Email 認証要素のような自動登録された認証器は、API には一覧表示されない点に注意してください。
- ユーザーが適切な認証要素に登録されていない場合は、Management API の authentication-methods エンドポイントを使用して登録を作成できます。また、Auth0 Dashboard のユーザーのプロファイルページから直接、ユーザーの登録を管理することもできます。
-
特定のユーザーでエラーが発生している場合は、そのユーザーの詳細を確認し、適切な認証要素に登録されていることを確認してください。Auth0 Dashboard > User Management > Users に移動し、一覧から該当するユーザー名を選択します。
-
Actions がデプロイされ、Pipeline に保存されていることを確認してください。
- Auth0 Dashboard > Actions > Library > Custom に移動します。一覧から Action を見つけ、status が Deployed であることを確認してください。別の status が表示されている場合は、その Action を開いてコードを確認し、右上の Deploy をクリックしてください。
- Auth0 Dashboard > Actions > Library > Flows に移動し、Login を選択します。フロー内に Action が表示されていることを確認してください。表示されていない場合は、Add Action パネルの Custom tab を開き、Action を Login フローにドラッグアンドドロップします。その後、Apply を選択してください。
-
post-loginActions を最新バージョンにアップグレードしていることを確認してください。- Auth0 Dashboard > Actions > Library > Custom に移動し、Action を選択します。Action が古い場合は、更新を促す黄色いバナーが表示されます。バナーが表示されたら、Update を選択してください。
- Deploy CLI を使用する場合は、デプロイ時に
post-loginActions の最新バージョンを指定することもできます。詳細については、Configure the Deploy CLI を参照してください。