Saltar al contenido principal
Puede utilizar la API de MFA de Auth0 para completar el flujo de autenticación mediante el flujo de contraseña del propietario del recurso (a veces llamado Password Grant o ROPG) cuando está habilitada.

Requisitos previos

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

Autenticar al usuario

Cuando utilice el flujo de contraseña del propietario del recurso para autenticarse, llame al endpoint /oauth/token con el username y la contraseña del usuario. Cuando MFA está habilitado, la respuesta incluye un error mfa_required y un mfa_token.
El tiempo de expiración predeterminado de los tokens de acceso con la audiencia https://{yourDomain}/mfa/* es de 10 minutos. Este valor no se puede configurar.
{
    "error": "mfa_required",
    "error_description": "Multifactor authentication required",
    "mfa_token": "Fe26...Ha"
}

Obtener autenticadores inscritos

Después de obtener el error anterior, debe determinar si el usuario tiene inscrito un factor MFA o no. Llame al endpoint de autenticadores de MFA con el token de MFA obtenido en la sección anterior. Obtendrá un array con los autenticadores disponibles. El array estará vacío si el usuario no ha inscrito ningún factor.
[
    {
        "id": "recovery-code|dev_O4KYL4FtcLAVRsCl",
        "authenticator_type": "recovery-code",
        "active": true
    },
    {
        "id": "email|dev_NU1Ofuw3Cw0XCt5x",
        "authenticator_type": "oob",
        "active": true,
        "oob_channel": "email",
        "name": "email@address.com"
    }
]

Inscribir un factor MFA

Si el usuario no está inscrito en MFA, usa el token de MFA obtenido anteriormente y completa la inscripción mediante el endpoint MFA Associate. Consulta los siguientes enlaces para implementar este flujo según el factor de autenticación:

Desafíe al usuario con MFA

Si el usuario ya está inscrito en MFA, debe desafiarlo con uno de los factores existentes. Use el authenticator_id devuelto por el endpoint MFA Authenticators al llamar al endpoint MFA Challenge. Una vez completado el desafío, llame nuevamente al endpoint /oauth/token para finalizar el flujo de autenticación y obtener los tokens de autenticación. Consulte los enlaces a continuación para implementar este flujo según el factor de autenticación:

Limitaciones y restricciones de los códigos OTP de MFA

Tiempo de expiración: El tiempo de expiración de los códigos OTP de MFA es de 5 minutos. Este valor no se puede configurar. Validación del código: Después de que un usuario valida un código OTP de MFA, no puede volver a usarse. Límite de tasa de validación del código: Los intentos fallidos de validación del usuario están sujetos a un límite de tasa mediante un algoritmo de bucket. El bucket comienza con 10 intentos y se repone a razón de 1 intento cada 6 minutos.

Personalizar MFA

La personalización de MFA con los flujos Resource Owner Password Grant, integrado o de 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 Auth0 Support.
Personalice sus flujos de MFA con la MFA API. Con la MFA API, puede permitir que sus usuarios se inscriban y completen desafíos con una selección específica de factores compatibles con su aplicación. Cuando MFA está habilitada con el flujo de contraseña del propietario del recurso para autenticar, llame al endpoint /oauth/token para solicitar un token de acceso. El Servidor de autorización devuelve un error mfa_required que proporciona:
  • El mfa_token que necesita para llamar a la MFA API para la inscripción y los desafíos.
  • El parámetro mfa_requirements, que indica el tipo de factor que su aplicación admite para los desafíos.
{
  "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" }
    ]
  }
}
Use mfa_token para llamar al mfa/authenticator endpoint, enumerar todos los factores que el usuario tiene inscritos e identificar 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
  }
]
Aplique el desafío de MFA llamando al endpoint request/mfa/challenge. Personalice aún más su flujo de MFA con Auth0 Actions. Para obtener más información, lea Desencadenadores de Actions: post-challenge - objeto de API.

Más información