Saltar al contenido principal
Auth0 proporciona un flujo integrado de inscripción y autenticación con mediante Universal Login. Sin embargo, si quiere crear su propia interfaz de usuario, puede usar la MFA API para hacerlo.

Requisitos previos

Antes de poder usar las API de MFA, debe habilitar el tipo de concesión de MFA para su aplicación. Vaya a Auth0 Dashboard > Applications > Advanced Settings > Grant Types y seleccione MFA.

Inscribirse mediante SMS o voz

Obtener un token de MFA

Según cuándo actives la inscripción, puedes obtener un para usar la API de MFA de distintas maneras:

Inscribir el autenticador

Realice una solicitud POST al endpoint MFA Associate para inscribir el autenticador del usuario. El token bearer requerido por este endpoint es el token de MFA obtenido en el paso anterior. Para inscribirse mediante SMS o voz, use un número de teléfono al que se le pueda enviar un desafío por SMS o voz. Especifique los siguientes parámetros para llamar al endpoint. El parámetro oob_channels indica cómo desea enviar el code al usuario (SMS o voz).
ParámetroValor
authentication_types[oob]
oob_channels[sms] o [voice]
phone_number+11...9, el número de teléfono en formato E.164
Si la operación se realiza correctamente, recibirá una respuesta como esta:
{
  "authenticator_type": "oob",
  "binding_method": "prompt",
  "recovery_codes": [ "N3BGPZZWJ85JLCNPZBDW6QXC" ],
  "oob_channel": "sms",
  "oob_code": "ata6daXAiOi..."
}
`
Si recibe un error User is already enrolled, el usuario ya tiene inscrito un factor de MFA. Antes de asociar otro factor al usuario, debe solicitarle un desafío con el factor existente. Si es la primera vez que el usuario asocia un autenticador, verá 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 el acceso a la cuenta o al dispositivo usado para la autenticación con segundo factor. Estos códigos son de un solo uso y se generan otros nuevos según sea necesario.

Confirmar la inscripción por SMS o por voz

Los usuarios deberían recibir un mensaje con un code de 6 dígitos que deben introducir en la aplicación. Para completar la inscripción, realiza una solicitud POST al . Debes incluir el oob_code devuelto en la respuesta anterior y el binding_code con el valor recibido en el mensaje. Si la llamada se realizó correctamente, recibirás una respuesta en 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"
}

Desafío por SMS o voz

Obtener un token de MFA

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

Recuperar autenticadores inscritos

Para desafiar al usuario, necesita el authenticator_id del factor que quiere desafiar. Puede listar todos los autenticadores inscritos mediante el endpoint de MFA Authenticators: Obtendrá una lista de autenticadores con el siguiente formato:
[
    {
        "id": "recovery-code|dev_O4KYL4FtcLAVRsCl",
        "authenticator_type": "recovery-code",
        "active": true
    },
    {
        "id": "sms|dev_NU1Ofuw3Cw0XCt5x",
        "authenticator_type": "oob",
        "active": true,
        "oob_channel": "sms",
        "name": "XXXXXXXX8730"
    },
        {
        "id": "voice|dev_NU1Ofuw3Cw0XCt5x",
        "authenticator_type": "oob",
        "active": true,
        "oob_channel": "voice",
        "name": "XXXXXXXX8730"
    }
]

Desafiar al usuario con OTP

Para iniciar un desafío, envíe una solicitud POST al endpoint de MFA Challenge con el authenticator_id correspondiente y el mfa_token.

Completar la autenticación con el code recibido

Si la operación se realiza correctamente, recibirá la siguiente respuesta:
{
  "challenge_type": "oob",
  "oob_code": "asdae35fdt5...",
  "binding_method": "prompt"
}
Su aplicación debe pedir al usuario el code de 6 dígitos enviado en el mensaje y establecerlo en el parámetro binding_code. Puede verificar el code y obtener tokens de autenticación mediante el endpoint de token de OAuth0, especificando los valores binding_code y oob_code devueltos por la llamada anterior: Si la llamada se realiza 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"
}
Nota: El envío de SMS y las respuestas por code no válido están sujetos a limitación de tasa. Los code por SMS se pueden enviar 10 veces y se restablecen una vez por hora, mientras que las respuestas por code no válido se pueden devolver 10 veces y se restablecen una vez cada seis minutos.

Personaliza MFA

La MFA personalizable en los flujos Resource Owner Password Grant, Embedded o Refresh Token está en EA. 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 fases de lanzamiento de Auth0, consulte Etapas de lanzamiento del producto. 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 de su elección que admite 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
    ]
  }
}
Use mfa_token para llamar al endpoint mfa/authenticator y obtener una lista de todos los factores en los que el usuario se ha inscrito, y busque uno del mismo tipo que admite su aplicación. También debe obtener el authenticator_type correspondiente para emitir 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
  }
]
Exige 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