> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Verificación con fuera de banda (OOB)

> Verifique MFA mediante un desafío fuera de banda (OOB), como una notificación push, un SMS o una llamada de voz.

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

<div id="endpoint">
  ## Endpoint
</div>

`POST /oauth/token`

Verifica la autenticación multifactor (MFA) mediante un desafío fuera de banda (OOB), ya sea una notificación push, un SMS o una llamada de voz. Para verificar MFA mediante un desafío OOB, la aplicación debe hacer una solicitud a `/oauth/token` con `grant_type=http://auth0.com/oauth/grant-type/mfa-oob`. Incluya el `oob_code` que recibió en la respuesta al desafío, así como el `mfa_token` que recibió como parte del error `mfa_required`.

La respuesta a esta solicitud depende del estado de verificación del desafío subyacente:

* Si el desafío se ha aceptado y verificado, la respuesta será la misma que para los tipos de concesión `password` o `http://auth0.com/oauth/grant-type/password-realm`.
* Si el desafío se ha rechazado, obtendrá un error `invalid_grant`, lo que significa que el usuario rechazó el desafío. En este punto, debe dejar de consultar, ya que esta respuesta es definitiva.
* Si la verificación del desafío sigue pendiente (es decir, aún no se ha aceptado ni rechazado), obtendrá un error `authorization_pending`, lo que significa que debe volver a intentar la misma solicitud unos segundos después. Si realiza solicitudes con demasiada frecuencia, obtendrá un error `slow_down`.

Cuando la respuesta al desafío incluye `binding_method: prompt`, la aplicación debe pedir al usuario el `binding_code` y enviarlo como parte de la solicitud. El `binding_code` suele ser un número de 6 dígitos (similar a un OTP) incluido en el desafío. No es necesario enviar un `binding_code` si la respuesta al desafío no incluyó un `binding_method`. En este caso, la respuesta será inmediata; recibirá un `invalid_grant` o un `access_token` como respuesta.

<div id="learn-more">
  ### Más información
</div>

* [Asociar autenticadores fuera de banda](https://auth0.com/docs/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa/enroll-challenge-sms-voice-authenticators)

<div id="headers">
  ## Encabezados
</div>

<ParamField header="DPoP" type="string">
  Una prueba DPoP para la solicitud. Es opcional y solo se requiere si su aplicación usa Demonstrating Proof-of-Possession.
</ParamField>

<div id="body-parameters">
  ## Parámetros del cuerpo
</div>

<ParamField body="grant_type" type="string" required>
  Indica el flujo que está utilizando. Para MFA con OTP, use `http://auth0.com/oauth/grant-type/mfa-oob`.

  Valores permitidos: `http://auth0.com/oauth/grant-type/mfa-oob`
</ParamField>

<ParamField body="client_id" type="string" required>
  El ID de cliente de su aplicación.
</ParamField>

<ParamField body="client_assertion" type="string">
  Un JWT que contiene una aserción firmada con las credenciales de su aplicación.
</ParamField>

<ParamField body="client_assertion_type" type="string">
  El valor es `urn:ietf:params:oauth:client-assertion-type:jwt-bearer`.

  Valores permitidos: `urn:ietf:params:oauth:client-assertion-type:jwt-bearer`
</ParamField>

<ParamField body="client_secret" type="string">
  El Secreto del cliente de su aplicación.
</ParamField>

<ParamField body="mfa_token" type="string" required>
  El `mfa_token` que recibió en el error `mfa_required`.
</ParamField>

<ParamField body="oob_code" type="string" required>
  El code oob recibido en la solicitud de desafío.
</ParamField>

<ParamField body="binding_code" type="string">
  Un code que se usa para vincular el canal secundario con el canal principal que utiliza para autenticarse.
</ParamField>

<div id="response-schema">
  ## Esquema de respuesta
</div>

<ResponseSchema>
  <ResponseField name="access_token" type="string">
    El token de acceso que se devuelve tras una verificación exitosa.
  </ResponseField>

  <ResponseField name="token_type" type="string">
    El tipo de token emitido.
  </ResponseField>

  <ResponseField name="expires_in" type="integer">
    La duración del token de acceso en segundos.
  </ResponseField>

  <ResponseField name="error" type="string">
    Código de error devuelto cuando la verificación está pendiente o ha fallado.
  </ResponseField>

  <ResponseField name="error_description" type="string">
    Descripción del error.
  </ResponseField>
</ResponseSchema>

<div id="response-messages">
  ## Mensajes de respuesta
</div>

| Estado | Descripción                                                      |
| ------ | ---------------------------------------------------------------- |
| 200    | Respuesta satisfactoria para la verificación OOB.                |
| 400    | Solicitud incorrecta debido a parámetros faltantes o no válidos. |
| 401    | No autorizado; `mfa_token` o `oob_code` no válidos.              |
