メインコンテンツへスキップ
Rules と Hooks のサポート終了日 (EOL) は 2026 年 11 月 18 日です。また、2023 年 10 月 16 日以降に作成された新しいテナントでは、これらはすでに利用できません。Hooks が有効な既存のテナントでは、サポート終了日まで Hooks 製品へのアクセスが維持されます。Auth0 の拡張には、Actions の使用を強くお勧めします。Actions では、豊富な型情報、インラインドキュメント、公開 npm パッケージを利用できるほか、拡張性をさらに高める外部連携にも接続できます。Actions の機能の詳細については、Understand How Auth0 Actions Work をご覧ください。移行を支援するために、Rules から Actions への移行Hooks から Actions への移行 のガイドを提供しています。また、機能比較、Actions のデモ、移行に役立つその他のリソースをまとめた専用ページ Move to Actions も用意しています。Rules と Hooks の非推奨化の詳細については、ブログ記事 Preparing for Rules and Hooks End of Life をご覧ください。
Rules を使用すると、パスワードレス接続 だけでは対応できない、より複雑なケースを処理できます。たとえば、メールアドレスやデバイスの所持をより確実に確認するための追加対策を講じることができます。

企業ネットワーク外のユーザーに多要素認証を必須にする

企業ネットワークの外部から 接続を使用してアプリケーションにアクセスするユーザーに対して、多要素認証 (MFA) を必須にしたいとします。 ルールを使用すると、ユーザーがパスワードレス方式 (smsemail) で認証しているかどうかを確認し、セッションの IP アドレスが指定した企業ネットワークの範囲外であれば、2 つ目の認証要素を要求できます。
現在の IP アドレスがユーザーの IP 許可リストに一致するかどうかや、ユーザーの位置情報から、ユーザープロファイルに記載された国とは異なる国にいることが判明したかどうかなど、ほかの条件に基づいてこのルールをトリガーすることもできます。
これを行うには、次のルールを作成します:
function(user, context, callback) {
  const ipaddr = require('ipaddr.js');
  const corp_network = "192.168.1.134/26";
  const current_ip = ipaddr.parse(context.request.ip);
  // 認証方式がパスワードレスで、かつIPが社内ネットワーク外か?
  const passwordlessOutside = context.authentication.methods.find(
    (method) => (
      ((method.name === 'sms') || (method.name === 'email')) && 
      (!current_ip.match(ipaddr.parseCIDR(corp_network)))
    )
  );

  // 該当する場合、MFAを要求する
  if (passwordlessOutside) {
    context.multifactor = {
      provider: 'any',
      allowRememberBrowser: false
    };
  }
  callback(null, user, context);
}