メインコンテンツへスキップ
RulesとHooksのサポート終了(EOL)日は 2026年11月18日 であり、 2023年10月16 日の時点で作成された新しいテナントは使用できなくなります。Hooksが有効な既存のテナントは、サポート終了までHooksを利用できます。今後はActionsに移行して、Auth0の機能を拡張することを強くお勧めします。Actionsを使用すると、豊富な情報やインラインドキュメント、パブリックnpmパッケージにアクセスして、外部統合を使って全体的な拡張エクスペリエンスを強化することができます。Actionsの詳細については、「Auth0 Actionsの仕組みを理解する」をお読みください。当社では、移行の参考資料として、RulesからActionsへの移行HooksからActionsへの移行に関するガイドを提供しています。また、専用の「Actionsへの移行」ページでは、機能の比較やActionsのデモ、その他のリソースを掲載して、円滑な移行をサポートしています。RulesとHooksの廃止の詳細については、当社のブログ記事「RulesとHooksの提供終了について」をお読みください。
ルールを使用すると、パスワードレス接続だけを使うよりも複雑な状況が扱えるようになります。たとえば、メールアドレスやデバイスの所有を確実にするために、さらに対策を追加することができます。

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

企業ネットワークの外部からパスワードレス接続を使ってアプリケーションにアクセスしているユーザーに、多要素認証(MFA)を必須にしたいとします。 ルールを使用すると、ユーザーがパスワードレス方式(smsemail)を使って認証しているかどうかを確認し、セッションIPが指定の企業ネットワーク外だった場合に、第二認証要素を求めることができます。
このルールは、現在の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);
  // is auth method passwordless and IP outside corp network?
  const passwordlessOutside = context.authentication.methods.find(
    (method) => (
      ((method.name === 'sms') || (method.name === 'email')) && 
      (!current_ip.match(ipaddr.parseCIDR(corp_network)))
    )
  );

  // if yes, then require MFA
  if (passwordlessOutside) {
    context.multifactor = {
      provider: 'any',
      allowRememberBrowser: false
    };
  }
  callback(null, user, context);
}
I