> ## 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.

> Découvrez des exemples d’utilisation de Rules avec des connexions Passwordless.

# Exemples de cas d’utilisation - Rules avec l’authentification Passwordless

<Warning>
  La date de fin de vie (EOL) de Rules et Hooks est fixée au **18 novembre 2026**, et ils ne sont plus offerts aux nouveaux locataires créés à compter du **16 octobre 2023**. Les locataires existants ayant des Hooks actifs conserveront l’accès au produit Hooks jusqu’à sa fin de vie.

  Nous vous recommandons fortement d’utiliser Actions pour étendre Auth0. Avec Actions, vous avez accès à des informations de typage riches, à de la documentation intégrée et à des packages `npm` publics, et vous pouvez intégrer des services externes qui améliorent votre expérience globale d’extensibilité. Pour en savoir plus sur ce qu’offre Actions, consultez [Comprendre le fonctionnement d’Auth0 Actions](/fr-CA/docs/customize/actions/actions-overview).

  Pour vous aider dans votre migration, nous proposons des guides qui vous aideront à [migrer de Rules vers Actions](/fr-CA/docs/customize/actions/migrate/migrate-from-rules-to-actions) et à [migrer de Hooks vers Actions](/fr-CA/docs/customize/actions/migrate/migrate-from-hooks-to-actions). Nous avons également une page dédiée, [Passer à Actions](https://auth0.com/extensibility/movetoactions), qui présente des comparaisons de fonctionnalités, [une démonstration d’Actions](https://www.youtube.com/watch?v=UesFSY1klrI) et d’autres ressources pour vous accompagner dans votre migration.

  Pour en savoir plus sur la dépréciation de Rules et Hooks, consultez notre billet de blogue : [Préparer la fin de vie de Rules et Hooks](https://auth0.com/blog/preparing-for-rules-and-hooks-end-of-life/).
</Warning>

Avec les [Rules](/fr-CA/docs/customize/rules), vous pouvez gérer des cas plus complexes que ce qu’il est possible de faire avec les seules [connexions Passwordless](/fr-CA/docs/authenticate/passwordless). Par exemple, vous pouvez ajouter des mesures supplémentaires pour mieux garantir la possession d’une adresse de courriel ou d’un appareil.

<div id="require-multi-factor-authentication-for-users-who-are-outside-the-corporate-network">
  ## Exiger l’authentification multifacteur pour les utilisateurs à l’extérieur du réseau d’entreprise
</div>

Supposons que vous vouliez exiger l’[authentification multifacteur (MFA)](/fr-CA/docs/secure/multi-factor-authentication) pour tout utilisateur qui accède à l’application au moyen d’une connexion <Tooltip tip="Passwordless : forme d’authentification qui ne repose pas sur un mot de passe comme premier facteur." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=passwordless">passwordless</Tooltip> depuis l’extérieur de votre réseau d’entreprise.

À l’aide d’une Rule, vous pouvez vérifier si un utilisateur s’authentifie au moyen d’une méthode Passwordless (`sms`, `email`) et, si l’adresse IP de sa session se situe à l’extérieur du réseau d’entreprise défini, lui demander un deuxième facteur d’authentification.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Vous pouvez aussi déclencher cette Rule selon d’autres critères, par exemple si l’adresse IP actuelle correspond à la liste d’adresses IP autorisées de l’utilisateur ou si la géolocalisation révèle qu’il se trouve dans un autre pays que celui indiqué dans son profil.
</Callout>

Pour ce faire, créez [la Rule suivante](/fr-CA/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);
  // la méthode d'auth est-elle Passwordless et l'IP est-elle hors du réseau d'entreprise ?
  const passwordlessOutside = context.authentication.methods.find(
    (method) => (
      ((method.name === 'sms') || (method.name === 'email')) && 
      (!current_ip.match(ipaddr.parseCIDR(corp_network)))
    )
  );

  // si oui, exiger la MFA
  if (passwordlessOutside) {
    context.multifactor = {
      provider: 'any',
      allowRememberBrowser: false
    };
  }
  callback(null, user, context);
}
```
