Saltar al contenido principal
Auth0 le permite configurar la autenticación sin contraseña mediante correo electrónico y teléfono directamente en una conexión de base de datos. En lugar de crear una conexión independiente para la autenticación con OTP, puede ofrecer el inicio de sesión sin contraseña directamente desde su conexión de base de datos. Esto reduce la complejidad de la implementación y simplifica la experiencia de inicio de sesión para los usuarios finales.
La autenticación sin contraseña en conexiones de base de datos no es compatible con Classic Login.

Cómo funciona

Auth0 usa un enfoque de autenticación Identifier-First en el que los usuarios se verifican mediante autenticación OTP:
  1. El usuario final introduce un identificador para iniciar sesión con Universal Login de Auth0.
  2. Auth0 busca los métodos de autenticación de cada identificador configurado en tu conexión de base de datos.
  3. Al usuario se le muestra la opción más adecuada según default_method y los métodos de autenticación disponibles (por ejemplo, recibir un OTP por correo electrónico o teléfono, o introducir una contraseña).
  4. Si OTP es el método de autenticación seleccionado, Auth0 envía un code al correo electrónico o al teléfono del usuario.
  5. El usuario introduce el code y se autentica. Si has configurado claves de acceso, se le pedirá que complete la inscripción progresiva en claves de acceso.

Antes de empezar

Configurar atributos (identificadores)

Al configurar la autenticación sin contraseña con correo electrónico y teléfono en conexiones de base de datos, primero debe determinar qué atributo o atributos quiere que los usuarios finales proporcionen durante el registro y el inicio de sesión. Revise el tipo de identificador y el método de autenticación correspondiente:
IdentificadorMétodo(s) de autenticación
Correo electrónicoContraseña, OTP por correo electrónico, Passkey
TeléfonoContraseña, OTP por teléfono, Passkey
UsernameContraseña
Para los identificadores de correo electrónico y teléfono, si la contraseña no está habilitada, debe tener habilitada la verificación OTP para el registro. Puede configurar los atributos de correo electrónico y teléfono como opcionales durante el registro, para que los usuarios puedan registrarse solo con un correo electrónico o solo con un número de teléfono. Cuando un usuario se autentica con OTP por correo electrónico, email_verified se establece automáticamente en true en su perfil. Cuando un usuario se autentica con OTP por teléfono, phone_verified se establece automáticamente en true.
Si quiere que los usuarios finales se autentiquen con passkeys, debe tener configurado un método de autenticación alternativo, como correo electrónico o teléfono. No se admite la autenticación solo con passkeys.
Para obtener más información, consulte Activar y configurar atributos para identificadores flexibles.

Crear una nueva conexión de base de datos

Si no tiene una conexión de base de datos existente, cree una con Auth0 Dashboard o la Management API.
  1. Vaya a Auth0 Dashboard > Authentication > Database. Seleccione Create DB Connection para crear la conexión.
  2. Introduzca un nombre único para la conexión.
  3. Elija uno o más atributos para que los usuarios finales inicien sesión o se registren.
  4. Seleccione los métodos de autenticación. Puede configurar estos métodos con más detalle una vez creada la conexión.
  5. Active Disable Sign Ups si no quiere que los usuarios se registren mediante endpoints públicos.
  6. Active Promote Connection to Domain Level si quiere usar esta conexión con aplicaciones de terceros.
  7. Seleccione Create.
Para una conexión realmente sin contraseña, complete estos pasos adicionales:
  1. En la nueva conexión, seleccione la pestaña Attributes.
  2. Para desactivar Username como identificador, seleccione Configure y desactive Use Username as Identifier.
  3. Para configurar los identificadores de correo electrónico y teléfono, seleccione Configure.
  • Para los atributos de correo electrónico, seleccione One-Time Password (OTP) en Verification Methods y habilite Verify email on sign up para una configuración realmente sin contraseña. Esto garantiza que email_verified se establezca automáticamente para que a los usuarios siempre se les solicite un OTP al iniciar sesión y al registrarse.
  1. Seleccione Save.
  2. Configure los ajustes de los métodos de autenticación correspondientes a los identificadores elegidos. No puede desactivar la contraseña a menos que tenga configurado phone_otp y/o email_otp.
  3. En la configuración de Password, seleccione Policy y elija Block para:
    • Password on Login
    • Password on Signup
    • Self-service change password (updates automatically)
  4. Active Support users without a password.
    Puede producirse un error si no activa Support users without a password.
  5. Seleccione Save. En el aviso, seleccione Continue para confirmar que entiende que los usuarios existentes pueden verse afectados.
  6. Vaya a la pestaña Applications y habilite la conexión para la aplicación o API.

Actualizar conexiones existentes

Si tiene conexiones de base de datos existentes, actualice la configuración de inicio de sesión sin contraseña en Auth0 Dashboard o Management API.
  1. Abra la conexión: Vaya a Auth0 Dashboard > Authentication > Database y seleccione la conexión que desea actualizar.
  2. Active Attributes: En la pestaña Attributes, seleccione Activate para habilitar la New Attributes Configuration.
  3. Agregue los atributos de correo electrónico y teléfono: Seleccione + Add Attributes y agregue Email y Phone Number si todavía no están presentes.
    En una conexión verdaderamente sin contraseña (OTP), el identificador username no es compatible.
  4. Habilite los métodos de autenticación OTP: En la pestaña Authentication Methods:
    • Configure Phone en Allow Phone OTP y guarde los cambios.
    • Configure Email en Allow Email OTP y guarde los cambios.
  5. Bloquee la autenticación por contraseña: En la configuración de Password, elija Policy y seleccione Block para:
    • Password on Login
    • Password on Signup
    • Self-service change password
    Active Support users without a password.
    Es posible que reciba un error si no activa Support users without a password.
  6. Guarde: Seleccione Save.

Usa Auth0 Actions

Para obtener más información sobre los factores de autenticación sin contraseña en las conexiones de base de datos, configura atributos con Auth0 Actions.

Trigger de post-login

El trigger post-login se activa después de que un usuario se autentica, pero antes de que el servidor de autorización devuelva un token. El objeto event.authentication en Auth0 Dashboard > Actions > Triggers > Post Login expone los siguientes métodos:
MétodoParámetroDescripción
OTP por correo electrónicoemailOTP por correo electrónico que se utiliza para autenticar al usuario como primer factor.
OTP por SMSsmsOTP por teléfono (SMS) que se utiliza para autenticar al usuario como primer factor.
OTP por voztelOTP por teléfono mediante voz que se utiliza para autenticar al usuario como primer factor.
ContraseñapwdContraseña que se utiliza para autenticar al usuario como primer factor.
email_verified y phone_verified se establecen automáticamente en el perfil del usuario cuando un usuario se autentica mediante OTP por correo electrónico u OTP por teléfono. Si antes usabas una Action de post-login para establecer manualmente estos indicadores, puedes eliminar esa solución temporal.
Usa event.authentication para:
  • Detectar qué factor sin contraseña completó el usuario (email, sms, tel o pwd)
  • Agregar claims personalizados a los tokens según el método de autenticación
  • Ejecutar lógica de forma condicional según cómo se autenticó el usuario

Ejemplo

En el siguiente ejemplo, se lee event.authentication.methods para detectar qué factor sin contraseña completó el usuario y se añade como una claim personalizada al token de ID.
exports.onExecutePostLogin = async (event, api) => {
  if (!event.authentication?.methods || event.authentication.methods.length === 0) {
    return;
  }

  if (event.connection.name !== 'YOUR_AUTH0_CONNECTION') {
    return;
  }

  const firstFactor = event.authentication.methods[0];

  if (firstFactor.name === 'email') {
    api.idToken.setCustomClaim('https://your-app.com/auth_method', 'email_otp');
  } else if (firstFactor.name === 'sms' || firstFactor.name === 'tel') {
    api.idToken.setCustomClaim('https://your-app.com/auth_method', 'phone_otp');
  } else if (firstFactor.name === 'pwd') {
    api.idToken.setCustomClaim('https://your-app.com/auth_method', 'password');
  }
};

Trigger posterior al desafío

El trigger post-challenge se ejecuta después de que los usuarios completan un desafío, como un restablecimiento de contraseña, la validación del número de teléfono o MFA. El objeto event.authentication en Auth0 Dashboard > Actions > Triggers > password-reset-post-challenge expone los siguientes atributos:
AtributoParámetroDescripción
Correo electrónicoemailRestablecimiento de contraseña con OTP por correo electrónico o enlace mágico.
Teléfonophone_numberRestablecimiento de contraseña con OTP enviado al teléfono.

Ejemplo

El siguiente ejemplo lee event.authentication.methods para detectar qué factor de autenticación sin contraseña completó el desafío y lo añade como un claim personalizado en el token de ID.
exports.onExecutePostChallenge = async (event, api) => {
  if (!event.authentication?.methods || event.authentication.methods.length === 0) {
    return;
  }

  if (event.connection.name !== 'YOUR_AUTH0_CONNECTION') {
    return;
  }

  const firstFactor = event.authentication.methods[0];

  if (firstFactor.name === 'email') {
    api.idToken.setCustomClaim('https://your-app.com/challenge_method', 'email_otp');
  } else if (firstFactor.name === 'phone_number') {
    api.idToken.setCustomClaim('https://your-app.com/challenge_method', 'phone_otp');
  }
};

Beneficios

  • Implementación simplificada: Menos conexiones que configurar y mantener. No es necesario vincular cuentas, a menos que se usen conexiones sociales/federadas junto con conexiones de base de datos.
  • Mejora de la experiencia del usuario: Ofrece combinaciones de OTP por correo electrónico y teléfono con contraseñas, passkeys e inicio de sesión social/federado, todo desde la misma experiencia de identificador primero en Universal Login.
  • Flujos de registro flexibles: Configure los atributos de correo electrónico y teléfono como opcionales durante el registro, lo que permite a los usuarios registrarse solo con un correo electrónico o solo con un número de teléfono; ideal para experiencias centradas en dispositivos móviles o solo con correo electrónico.
  • OTP por voz: El OTP por voz se incluye como primer factor cuando se configura en la experiencia telefónica unificada.

Limitaciones

  • Disponible solo para flujos basados en Universal Login; todavía no es compatible con la autenticación basada en API.
  • La autenticación sin contraseña para conexiones de base de datos no se admite con Classic Login.
  • La autenticación sin contraseña para conexiones de base de datos no admite Implicit Signup & Login.
  • En las conexiones heredadas sin contraseña, no había diferencias en la experiencia de usuario entre el registro y el inicio de sesión. Las conexiones de base de datos distinguen entre la experiencia de registro y la de inicio de sesión, lo que requiere un registro y un inicio de sesión explícitos.
    • Si un usuario sin una identidad de Auth0 entra en el flujo de inicio de sesión, el sistema no lo registrará automáticamente. El usuario recibe un error después de validar el OTP.
    • Si un usuario con una identidad de Auth0 entra en el flujo de registro, recibe un error después de validar el OTP.

Más información