パスワードリセット トリガーは、パスワードリセットのプロセス中に、ユーザーが最初のチャレンジ (通常はユーザーのメールアドレスに送信されたリンク) を完了した後、新しいパスワードを設定する前に実行されます。これを使用すると、追加の (MFA) 認証要素でユーザーに追加のチャレンジを要求したり、サードパーティの検証サービスなどの外部サイトにユーザーをリダイレクトしたりできます。
検証後、ユーザーはアカウントの新しいパスワードを入力できます。
このフロー内の Actions はブロッキング (同期) であるため、トリガー処理の一部として実行され、Action が完了するまで Auth0 パイプラインの残りの処理は実行されません。
これらの Actions を正しく実行するには、Universal Login を有効にする必要があります。Classic Login を使用している場合、これらの Actions はトリガーされません。
post-challenge トリガーは、ユーザーが最初のパスワードリセット チャレンジ (通常はメールアドレスのマジックリンク) を完了した後に実行される関数です。テナントでは、post-challenge トリガーを利用する Actions を最大4つまで作成できます。
パスワードリセット トリガーでは、Active Directory/LDAP 接続はサポートされていません。
追加の MFA 認証要素による安全なパスワードリセット
password-reset / post-challenge Actions では、ユーザーが最初のチャレンジを完了した後に MFA チャレンジを要求できます。たとえば、テナントで WebAuthn が認証要素として有効になっている場合は、第 2 要素として WebAuthn ベースのチャレンジを要求できます。
/**@type {PasswordResetPostChallengeAction}**/
module.exports.onExecutePostChallenge = async (event, api) => {
const enrolledFactors = event.user.enrolledFactors.map((x) => ({
type: x.type
}));
api.authentication.challengeWith({ type: 'webauthn-roaming' }, { additionalFactors: enrolledFactors });
};
ユーザーをサードパーティ製アプリケーションにリダイレクトする
MFA チャレンジに加えて、カスタム Action にリダイレクトを追加することもできます。たとえば、サードパーティの検証サービスやリスク評価サービスにリダイレクトできます。
/** @type {PasswordResetPostChallengeAction}
* このサンプルActionはユーザーをサンプルアプリにリダイレクトし、
* リダイレクト後にActionを続行してユーザーに
* MFA要素でチャレンジします
*/
module.exports.onExecutePostChallenge = async (event, api) => {
// ユーザーを https://my-app.example.com に送信する
api.redirect.sendUserTo('https://my-app.example.com');
};
module.exports.onContinuePostChallenge = async (event, api) => {
const enrolledFactors = event.user.enrolledFactors.map((x) => ({
type: x.type
}));
// メールアドレスOTPまたは他の登録済み要素でユーザーにチャレンジする
api.authentication.challengeWith({ type: 'email' }, { additionalFactors: enrolledFactors });
// 複数のオプションでユーザーにチャレンジする例
// この場合、メールアドレスOTPまたはSMS OTP
// api.authentication.challengeWithAny([{ type: 'email' }, { type: 'sms' }]);
};
Auth0 がユーザーをリダイレクトしている間、Actions パイプラインはアクティブになりません。ユーザーが Auth0 のログインプロセスを続行すると、Actions パイプラインは再開されます。リダイレクト前に実行された Actions は再実行されません。詳しくは、Actions でのリダイレクトを参照してください。