> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> パスワードレス接続で Rules を使用する例を紹介します。

# サンプルユースケース - パスワードレス認証における Rules

<Warning>
  Rules と Hooks のサポート終了日 (EOL) は **2026 年 11 月 18 日**です。また、**2023 年 10 月 16 日**以降に作成された新しいテナントでは、これらはすでに利用できません。Hooks が有効な既存のテナントでは、サポート終了日まで Hooks 製品へのアクセスが維持されます。

  Auth0 の拡張には、Actions の使用を強くお勧めします。Actions では、豊富な型情報、インラインドキュメント、公開 `npm` パッケージを利用できるほか、拡張性をさらに高める外部連携にも接続できます。Actions の機能の詳細については、[Understand How Auth0 Actions Work](/ja/docs/customize/actions/actions-overview) をご覧ください。

  移行を支援するために、[Rules から Actions への移行](/ja/docs/customize/actions/migrate/migrate-from-rules-to-actions) と [Hooks から Actions への移行](/ja/docs/customize/actions/migrate/migrate-from-hooks-to-actions) のガイドを提供しています。また、機能比較、[Actions のデモ](https://www.youtube.com/watch?v=UesFSY1klrI)、移行に役立つその他のリソースをまとめた専用ページ [Move to Actions](https://auth0.com/extensibility/movetoactions) も用意しています。

  Rules と Hooks の非推奨化の詳細については、ブログ記事 [Preparing for Rules and Hooks End of Life](https://auth0.com/blog/preparing-for-rules-and-hooks-end-of-life/) をご覧ください。
</Warning>

[Rules](/ja/docs/customize/rules) を使用すると、[パスワードレス接続](/ja/docs/authenticate/passwordless) だけでは対応できない、より複雑なケースを処理できます。たとえば、メールアドレスやデバイスの所持をより確実に確認するための追加対策を講じることができます。

<div id="require-multi-factor-authentication-for-users-who-are-outside-the-corporate-network">
  ## 企業ネットワーク外のユーザーに多要素認証を必須にする
</div>

企業ネットワークの外部から <Tooltip tip="パスワードレス: 第1要素としてパスワードに依存しない認証方式。" cta="用語集を見る" href="/ja/docs/glossary?term=passwordless">パスワードレス</Tooltip> 接続を使用してアプリケーションにアクセスするユーザーに対して、[多要素認証 (MFA) ](/ja/docs/secure/multi-factor-authentication) を必須にしたいとします。

ルールを使用すると、ユーザーがパスワードレス方式 (`sms`、`email`) で認証しているかどうかを確認し、セッションの IP アドレスが指定した企業ネットワークの範囲外であれば、2 つ目の認証要素を要求できます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  現在の IP アドレスがユーザーの IP 許可リストに一致するかどうかや、ユーザーの位置情報から、ユーザープロファイルに記載された国とは異なる国にいることが判明したかどうかなど、ほかの条件に基づいてこのルールをトリガーすることもできます。
</Callout>

これを行うには、[次のルールを作成します](/ja/docs/customize/rules/create-rules):

```javascript lines theme={null}
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);
}
```
