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

> Explora ejemplos de uso de Rules con conexiones sin contraseña.

# Casos de uso de ejemplo: Rules con autenticación sin contraseña

<Warning>
  La fecha de fin de vida útil (EOL) de Rules y Hooks será el **18 de noviembre de 2026**, y ya no están disponibles para nuevos inquilinos creados a partir del **16 de octubre de 2023**. Los inquilinos existentes con Hooks activos conservarán el acceso al producto Hooks hasta su fin de vida útil.

  Recomendamos encarecidamente que uses Actions para ampliar Auth0. Con Actions, tienes acceso a información de tipos más completa, documentación integrada y paquetes públicos de `npm`, y puedes conectar integraciones externas que mejoran tu experiencia general de extensibilidad. Para obtener más información sobre lo que ofrece Actions, consulta [Understand How Auth0 Actions Work](/es/docs/customize/actions/actions-overview).

  Para ayudarte con la migración, ofrecemos guías para [migrar de Rules a Actions](/es/docs/customize/actions/migrate/migrate-from-rules-to-actions) y [migrar de Hooks a Actions](/es/docs/customize/actions/migrate/migrate-from-hooks-to-actions). También tenemos una página específica, [Move to Actions](https://auth0.com/extensibility/movetoactions), que destaca comparaciones de funcionalidades, [una demostración de Actions](https://www.youtube.com/watch?v=UesFSY1klrI) y otros recursos para ayudarte en tu proceso de migración.

  Para obtener más información sobre la deprecación de Rules y Hooks, consulta nuestra entrada de blog: [Preparing for Rules and Hooks End of Life](https://auth0.com/blog/preparing-for-rules-and-hooks-end-of-life/).
</Warning>

Con [Rules](/es/docs/customize/rules), puedes gestionar casos más complejos de los que es posible resolver solo con [conexiones sin contraseña](/es/docs/authenticate/passwordless). Por ejemplo, puedes añadir medidas adicionales para reforzar la verificación de posesión de una dirección de correo electrónico o de un dispositivo.

<div id="require-multi-factor-authentication-for-users-who-are-outside-the-corporate-network">
  ## Requerir autenticación multifactor para los usuarios que estén fuera de la red corporativa
</div>

Supongamos que desea requerir [autenticación multifactor (MFA)](/es/docs/secure/multi-factor-authentication) para cualquier usuario que acceda a la aplicación mediante una <Tooltip tip="Sin contraseña: forma de autenticación que no depende de una contraseña como primer factor." cta="Ver glosario" href="/es/docs/glossary?term=passwordless">sin contraseña</Tooltip> conexión desde fuera de su red corporativa.

Con una Rule, puede comprobar si un usuario se autentica con un método sin contraseña (`sms`, `email`) y, si la IP de su sesión queda fuera de la red corporativa designada, pedirle un segundo factor de autenticación.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  También podría activar esta Rule en función de otros criterios, por ejemplo, si la IP actual coincide con la lista de direcciones IP permitidas del usuario o si la geolocalización del usuario indica que se encuentra en un país distinto del que figura en su perfil.
</Callout>

Para ello, debe [crear la siguiente Rule](/es/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);
  // ¿el método de autenticación es sin contraseña y la IP está fuera de la red corporativa?
  const passwordlessOutside = context.authentication.methods.find(
    (method) => (
      ((method.name === 'sms') || (method.name === 'email')) && 
      (!current_ip.match(ipaddr.parseCIDR(corp_network)))
    )
  );

  // si es así, requerir MFA
  if (passwordlessOutside) {
    context.multifactor = {
      provider: 'any',
      allowRememberBrowser: false
    };
  }
  callback(null, user, context);
}
```
