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

# Agregar un autenticador

> Asocia un nuevo autenticador con un usuario para habilitar la autenticación multifactor (MFA).

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 /mfa/associate`

Asocia o agrega un nuevo autenticador para la autenticación multifactor (MFA).

Si el usuario tiene autenticadores activos, se requiere un Token de acceso con el scope `enroll` y `audience` establecido en `https://{yourDomain}/mfa/` para usar este endpoint.

Si el usuario no tiene autenticadores activos, puedes usar el `mfa_token` del error `mfa_required` en lugar de un Token de acceso para esta solicitud.

Después de agregar un autenticador, este debe verificarse. Para verificarlo, usa los valores de la respuesta de la solicitud `/mfa/associate` en lugar de los valores devueltos por el endpoint `/mfa/challenge` y continúa con el flujo de verificación.

La primera vez que se agrega un autenticador, se incluye un campo `recovery_codes` en la respuesta. Puedes usar `recovery_codes` para completar la autenticación multifactor, como se muestra arriba en [Verificar con código de recuperación](/es/multi-factor-authentication/verify-with-recovery-code).

Para acceder a este endpoint, debes establecer un Token de acceso en el encabezado Authorization, con los siguientes claims:

* `scope`: `enroll`
* `audience`: `https://{yourDomain}/mfa/`

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

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

<ParamField body="client_assertion" type="string">
  Un JWT que contiene una aserción firmada con las credenciales de tu aplicación. Es obligatorio cuando JWT con clave privada es el método de autenticación de tu aplicación.
</ParamField>

<ParamField body="client_assertion_type" type="string">
  El valor es `urn:ietf:params:oauth:client-assertion-type:jwt-bearer`. Es obligatorio cuando JWT con clave privada es el método de autenticación de la aplicación.
</ParamField>

<ParamField body="client_secret" type="string" required>
  El Secreto del cliente de tu aplicación. Es obligatorio cuando el campo Método de autenticación del endpoint de token en la configuración de tu aplicación es `Post` o `Basic`.
</ParamField>

<ParamField body="authenticator_types" type="array" required>
  El valor es un array con los valores 'otp' u 'oob'.
</ParamField>

<ParamField body="oob_channels" type="array">
  Es obligatorio si `authenticator_types` incluye `oob`.
</ParamField>

<ParamField body="phone_number" type="string">
  El número de teléfono que se usará para SMS o voz. Es obligatorio si `oob_channels` incluye `sms` o `voice`.
</ParamField>

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

<ResponseSchema>
  <ResponseField name="oob_code" type="string">
    El code para la autenticación fuera de banda.
  </ResponseField>

  <ResponseField name="binding_method" type="string">
    Indica el método de Binding.
  </ResponseField>

  <ResponseField name="authenticator_type" type="string">
    El tipo de autenticador.
  </ResponseField>

  <ResponseField name="oob_channels" type="string">
    Los canales OOB que usa el autenticador.
  </ResponseField>

  <ResponseField name="recovery_codes" type="array">
    Un array de códigos de recuperación que Auth0 genera para el usuario. Cuando un usuario agrega un autenticador, los códigos de recuperación se muestran solo una vez.
  </ResponseField>
</ResponseSchema>

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

| Estado | Descripción                                                      |
| ------ | ---------------------------------------------------------------- |
| 200    | Respuesta satisfactoria al agregar un autenticador.              |
| 400    | Solicitud incorrecta debido a parámetros faltantes o no válidos. |
| 401    | No autorizado; token de acceso o mfa\_token no válidos.          |
