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 MFA API para ello.

Requisitos previos

Antes de 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 OTP

Obtener un token de MFA

Según cuándo inicies el proceso de inscribirse, puedes obtener un para usar la API de MFA de diferentes maneras:

Inscribirse en el autenticador

Haz una solicitud POST al endpoint de MFA Associate para inscribir al usuario en el autenticador. El token Bearer que requiere este endpoint es el token de MFA obtenido en el paso anterior. Para inscribirse con OTP, establece el parámetro authenticator_types en [otp]. Si la solicitud se realiza correctamente, recibirás una respuesta como esta:
{
  "authenticator_type": "otp",
  "secret": "EN...S",
  "barcode_uri": "otpauth://totp/tenant:user?secret=...&issuer=tenant&algorithm=SHA1&digits=6&period=30",
  "recovery_codes": [ "N3B...XC"]
}
Si obtienes un error de User is already enrolled, el usuario ya se ha inscrito en un factor de MFA. Antes de asociar otro factor al usuario, debes solicitarle una verificación con el factor existente. Si es la primera vez que el usuario asocia un autenticador, notará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 utilizado 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 acción de inscribirse en OTP

Para confirmar la acción de inscribirse, el usuario final deberá introducir el secreto obtenido en el paso anterior en una aplicación generadora de OTP, como Google Authenticator. Puede introducir el secreto escaneando un código QR con el barcode_uri o escribiendo el secreto manualmente en esa aplicación OTP. Debe proporcionar a los usuarios una forma de obtener el secreto en formato de texto en caso de que no puedan escanear el código QR (por ejemplo, si están intentando inscribirse desde un dispositivo móvil o si usan una aplicación OTP de escritorio). Después de que el usuario introduzca el secreto, la aplicación OTP mostrará un code de 6 dígitos que el usuario deberá introducir en su aplicación. A continuación, la aplicación debe realizar una solicitud POST al e incluir ese valor de otp. 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 está completamente asociado y listo para usarse, y ya cuenta con los tokens de autenticación del usuario. Puede verificar en cualquier momento si se ha confirmado un autenticador llamando al endpoint de MFA Authenticators. Si el autenticador está confirmado, el valor devuelto para active es true.

Verificación con OTP

Obtener un token de MFA

Obtenga un token de MFA siguiendo los pasos que se describen en Autenticarse con Resource Owner Password Grant y MFA.

Obtener autenticadores inscritos

Puede listar todos los autenticadores inscritos mediante el endpoint MFA Authenticators: Obtendrá una lista de autenticadores con el siguiente formato:
[
    {
        "id": "recovery-code|dev_qpOkGUOxBpw6R16t",
        "authenticator_type": "recovery-code",
        "active": true
    },
    {
        "id": "totp|dev_6NWz8awwC8brh2dN",
        "authenticator_type": "otp",
        "active": true
    }
]

Completa la autenticación con el código recibido

El usuario recibirá una OTP, que luego deberás solicitarle. Puedes verificar el code y obtener tokens de autenticación mediante el endpoint Token de OAuth0, especificando la OTP en el parámetro otp: 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 Refresh Token se encuentra en acceso anticipado. Al usar esta funcionalidad, 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 Auth0 Support.
La MFA personalizable permite a los usuarios inscribirse y realizar la verificación 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
    ]
  }
}
Usa 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 compárala con el tipo que admite tu aplicación. También debes obtener el authenticator_type correspondiente para emitir verificaciones:
[
  {
    "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
  }
]
Aplique la verificación de MFA mediante una llamada al endpoint request/mfa/challenge. Personalice aún más su flujo de MFA con Auth0 Actions. Para obtener más información, consulte Actions Triggers: post-challenge - API Object.

Más información