> ## 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.

# Verificar con código de recuperación

> Verifique la autenticación multifactor (MFA) mediante un código de recuperación cuando el dispositivo inscrito del usuario no esté disponible.

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 código de recuperación. Algunos proveedores de autenticación multifactor (MFA) (como Guardian) admiten el uso de un código de recuperación para iniciar sesión. Utilice este método para autenticarse cuando el dispositivo inscrito del usuario no esté disponible, o cuando el usuario no pueda recibir el desafío ni aceptarlo debido a problemas de conectividad.

Para verificar MFA con un código de recuperación, su aplicación debe solicitar al usuario el código de recuperación y, a continuación, realizar una solicitud a `/oauth/token` con `grant_type=http://auth0.com/oauth/grant-type/mfa-recovery-code`. Incluya el código de recuperación obtenido y el `mfa_token` del error `mfa_required`. Si se acepta el código de recuperación, la respuesta será la misma que para los grant types `password` o `http://auth0.com/oauth/grant-type/password-realm`. También puede incluir un campo `recovery_code`, que la aplicación debe mostrar al usuario final para que lo guarde de forma segura para usarlo en el futuro.

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

<ParamField header="DPoP" type="string">
  Una prueba de DPoP para la solicitud. Es opcional y solo se requiere si tu 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á usando. Para el código de recuperación, use `http://auth0.com/oauth/grant-type/mfa-recovery-code`.

  Valores permitidos: `http://auth0.com/oauth/grant-type/mfa-recovery-code`
</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="recovery_code" type="string" required>
  Código de recuperación proporcionado por el usuario.
</ParamField>

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

<ResponseSchema>
  <ResponseField name="access_token" type="string">
    El token de acceso obtenido tras una verificación correcta.
  </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="recovery_code" type="string">
    Un nuevo código de recuperación que debe almacenarse de forma segura para su uso futuro.
  </ResponseField>
</ResponseSchema>

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

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