Saltar al contenido principal
Auth0 proporciona un flujo integrado de inscripción y autenticación con mediante Universal Login. Sin embargo, si desea crear su propia interfaz de usuario, puede usar la MFA API para hacerlo. Cuando el correo electrónico está habilitado como factor, todos los usuarios con correo electrónico verificado podrán usarlo para completar la MFA.

La disponibilidad varía según el plan de Auth0

Tanto su implementación específica de inicio de sesión como su plan de Auth0 o acuerdo personalizado afectan la disponibilidad de esta función. Para obtener más información, consulte Pricing.

Requisitos previos

Antes de poder usar las API de MFA, deberás habilitar el tipo de concesión de MFA para tu aplicación. Ve a Auth0 Dashboard > Applications > Advanced Settings > Grant Types y selecciona MFA.

Inscripción con correo electrónico

Para permitir que los usuarios inscriban direcciones de correo electrónico además del correo electrónico verificado en su identidad principal, debe completar los siguientes pasos.

Obtener un token de MFA

Según en qué momento actives la inscripción, puedes obtener un para usar la API de MFA de distintas maneras:

Inscribir autenticador

Realice una solicitud POST al endpoint MFA Associate para inscribir el autenticador del usuario. El token de portador que requiere este endpoint es el token de MFA obtenido en el paso anterior. Use los siguientes parámetros:
ParámetroValor
authentication_types[oob]
oob_channels[email]
emailemail@address.com, la dirección de correo electrónico del usuario.
Si la operación se completa correctamente, recibirá una respuesta como esta:
{
    "authenticator_type": "oob",
    "binding_method": "prompt",
    "oob_code" : "Fe26..nWE",
    "oob_channel": "email",
    "recovery_codes": [ "N3BGPZZWJ85JLCNPZBDW6QXC" ]
  }
Si recibes el error User is already enrolled, significa que el usuario ya tiene un factor de MFA inscrito. Antes de asociar otro factor al usuario, debes solicitar una verificación con el factor existente. Si es la primera vez que el usuario asocia un autenticador, verás que la respuesta incluye recovery_codes. Los códigos de recuperación se usan para acceder a la cuenta del usuario en caso de que pierda acceso a la cuenta o al dispositivo que utiliza para la autenticación de segundo factor. Son códigos de un solo uso, y se generan nuevos según sea necesario.

Confirmar la inscripción por correo electrónico

El usuario debería recibir un correo electrónico con el code de 6 dígitos, que puede introducir en la aplicación. Para completar la inscripción, haz una solicitud POST al endpoint /oath/token. Incluye el oob_code devuelto en la respuesta anterior y el binding_code con el valor del mensaje de correo electrónico. Si la llamada se realiza correctamente, recibirás una respuesta con el siguiente formato, que incluye el token de acceso:
{
  "id_token": "eyJ...i",
  "access_token": "eyJ...i",
  "expires_in": 600,
  "scope": "openid profile",
  "token_type": "Bearer"
}
En este punto, el autenticador ya está completamente asociado y listo para usarse, y usted ya dispone de los tokens de autenticación del usuario. Puede comprobar en cualquier momento si se ha confirmado un autenticador llamando al endpoint MFA Authenticators. Si el autenticador está confirmado, el valor devuelto para active es true. Opcionalmente, puede personalizar los correos electrónicos que reciben los usuarios. Consulte Personalizar las plantillas de correo electrónico para obtener más información.

Desafío con correo electrónico

Obtener un token de MFA

Obtén un token de MFA siguiendo los pasos descritos en Autenticación con Resource Owner Password Grant y MFA.

Obtener los autenticadores inscritos

Para plantear un desafío al usuario, necesitas el authenticator_id del factor que quieres usar para el desafío. Puedes listar todos los autenticadores inscritos mediante el endpoint MFA Authenticators:

Solicitar un OTP al usuario

Para iniciar un desafío por correo electrónico, envía una solicitud POST al endpoint de desafío de MFA con el authenticator_id correspondiente y el mfa_token.

Complete la autenticación con el code recibido

Si la operación se realiza correctamente, recibirá la siguiente respuesta:
{
  "challenge_type": "oob",
  "oob_code": "abcd1234...",
  "binding_method": "prompt"
}
La aplicación debe solicitar al usuario el código y enviarlo como parte de la solicitud en el parámetro binding_code en la siguiente llamada al endpoint oauth``/token: Si la llamada se realizó correctamente, recibirás una respuesta con el siguiente formato, que contiene el token de acceso:
{
  "id_token": "eyJ...i",
  "access_token": "eyJ...i",
  "expires_in": 600,
  "scope": "openid profile",
  "token_type": "Bearer"
}

Personalizar MFA

La MFA personalizable con los flujos Resource Owner Password Grant, Embedded o Token de actualización está en acceso anticipado. Al usar esta función, acepta los términos aplicables de la prueba gratuita del Master Subscription Agreement de Okta. Para obtener más información sobre las etapas de lanzamiento de Auth0, consulte Product Release Stages. Para participar en el acceso anticipado, póngase en contacto con Soporte de Auth0.
La MFA personalizable permite a los usuarios inscribirse y realizar desafíos con los factores que elijan y que sean compatibles con su aplicación. Durante la autenticación en el endpoint oauth/token, la respuesta devuelve el error mfa_required, que incluye el mfa_token para usar la API de MFA y el parámetro mfa_requirements con una lista de autenticadores:
{
  "error": "mfa_required",
  "error_description": "Multifactor authentication required",
  "mfa_token": "Fe26...Ha",
  "mfa_requirements": {
    "challenge": [
      { "type": "otp" },
      { "type": "push-notification" },
      { "type": "phone" },
      { "type": "recovery-code" }
      { "type": "email"} //solo funciona con challenge
    ]
  }
}
Usa mfa_token para llamar al endpoint mfa/authenticator, obtener una lista de todos los factores en los que el usuario se ha inscrito y seleccionar el mismo tipo que admite tu aplicación. También debes obtener el authenticator_type correspondiente para generar desafíos:
[
  {
    "type": "recovery-code",
    "id": "recovery-code|dev_qpOkGUOxBpw6R16t",
    "authenticator_type": "recovery-code",
    "active": true
  },
  {
    "type": "otp",
    "id": "totp|dev_6NWz8awwC8brh2dN",
    "authenticator_type": "otp",
    "active": true
  }
]
Aplica el desafío de MFA llamando al endpoint request/mfa/challenge. Personaliza aún más tu flujo de MFA con Actions de Auth0. Para obtener más información, consulta Actions Triggers: post-challenge - API Object.

Más información