Saltar al contenido principal
Auth0 proporciona un flujo integrado de inscripción y autenticación de mediante Universal Login. Sin embargo, si desea crear su propia interfaz de usuario, puede usar la API de MFA para hacerlo. Puede inscribir a los usuarios y enviar desafíos mediante notificaciones push con la aplicación Guardian o su SDK mediante la API de MFA.

Requisitos previos

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

Inscribirse mediante push

Obtener token de MFA

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

Inscribir un autenticador

Realice una solicitud POST al endpoint MFA Associate para inscribir el autenticador del usuario. El token Bearer que requiere este endpoint es el token de MFA obtenido en el paso anterior. Para inscribirse con push, establezca el parámetro authenticator_types en [oob] y el parámetro oob_channels en [auth0]. Si la operación se realiza correctamente, recibirá una respuesta como esta:
{
    "authenticator_type": "oob",
    "barcode_uri": "otpauth://totp/tenant:user?enrollment_tx_id=qfjn2eiNYSjU3xID7dBYeCBSrdREWJPY&base_url=tenan",
    "recovery_codes": [
        "ALKE6EJZ4853BJYLM2DM2WU7"
    ],
    "oob_channel": "auth0",
    "oob_code": "Fe26.2...SYAg"
}
Si recibe el error User is already enrolled, el usuario ya tiene inscrito un factor de MFA. Antes de asociar otro factor al usuario, debe solicitar una verificación con el factor existente. Si es la primera vez que el usuario asocia un autenticador, observará 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 utilizado para la autenticación de segundo factor. Estos códigos son de un solo uso y se generan otros nuevos según sea necesario.

Confirmar la inscripción con push

Para confirmar la inscripción, el usuario final deberá escanear un código QR con el barcode_uri en la aplicación Guardian, en un plazo de 5 minutos. Una vez hecho esto, la aplicación Guardian notificará a Auth0 que el usuario se inscribió correctamente. Para saber si eso ocurrió, consulte periódicamente el de Auth0 con el oob_code devuelto por la llamada al endpoint MFA Associate. Si el usuario no ha escaneado el código, se devolverá una respuesta authorization_pending, lo que indica que debes llamar a oauth_token de nuevo en unos segundos:
{
    "error": "authorization_pending",
    "error_description": "Authorization pending: please repeat the request in a few seconds."
}
Si la llamada se realizó 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 ya dispone de los tokens de autenticación del usuario. Puede comprobar en cualquier momento si un autenticador se ha confirmado llamando al endpoint MFA Authenticators. Si el autenticador está confirmado, el valor devuelto para active es true.

Desafío con notificación push

Obtener un token de MFA

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

Obtener los autenticadores inscritos

Para iniciar un desafío para el usuario, necesitas el authenticator_id del factor que quieres usar. Puedes listar todos los autenticadores inscritos con el endpoint MFA Authenticators: Obtendrás una lista de autenticadores con el siguiente formato:
[
    {
        "id": "recovery-code|dev_Ahb2Tb0ujX3w7ilC",
        "authenticator_type": "recovery-code",
        "active": true
    },
    {
        "id": "push|dev_ZUla9SQ6tAIHSz6y",
        "authenticator_type": "oob",
        "active": true,
        "oob_channel": "auth0",
        "name": "user's device name"
    },
    {
        "id": "totp|dev_gJ6Y6vpSrjnKeT67",
        "authenticator_type": "otp",
        "active": true
    }
]
Cuando los usuarios se inscriben con push, también quedan inscritos en OTP, ya que Guardian admite la autenticación con OTP en escenarios en los que el usuario no tiene conectividad.

Desafiar al usuario mediante push

Para activar un desafío mediante push, envía 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 se completa correctamente, recibirá la siguiente respuesta:
{
    "challenge_type": "oob",
    "oob_code": "Fe26...jGco"
}
Su aplicación debe comenzar a consultar periódicamente el endpoint de token de OAuth0 hasta que el usuario acepte la notificación push. La llamada puede devolver uno de los siguientes resultados:
ResultadoDescripción
authorization_pendingError: si el desafío no se ha aceptado ni rechazado.
slow_downError: si el sondeo es demasiado frecuente.
access_token y refresh_tokenSi el desafío se ha aceptado, el sondeo debe detenerse en este punto.
invalid_grantError: si el desafío se ha rechazado; el sondeo debe detenerse en este punto.

Personalizar MFA

La MFA personalizable con los flujos Resource Owner Password Grant, Embedded o Refresh Token está en EA. Al usar esta función, acepta los términos de prueba gratuita aplicables 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 Auth0 Support.
La MFA personalizable permite a los usuarios inscribirse y completar desafíos con los factores compatibles con su aplicación que elijan. 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 el 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 determine cuál coincide con el 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
  }
]
Aplica la solicitud de MFA llamando al endpoint request/mfa/challenge. Personaliza aún más tu flujo de MFA con Auth0 Actions. Para obtener más información, consulta Actions Triggers: post-challenge - API Object.

Más información