# Autenticación de dos factores

La autenticación de dos factores (2FA) agrega un segundo paso de verificación más allá de tu contraseña al acceder al Dashboard de Fluxis. Algunas acciones sensibles — como **crear claves API** — requieren un método 2FA activo.

## Acceso al dashboard

Gestiona la 2FA en:

**`/app/user/2fa`**

Desde esta página puedes registrar métodos, completar desafíos de verificación y eliminar métodos que ya no uses.

## Métodos compatibles

| Método | Descripción |
| ------ | ----------- |
| **Email OTP** | Código de un solo uso enviado a tu correo registrado |
| **TOTP** | Códigos basados en tiempo de una app de autenticación (Google Authenticator, Authy, etc.) |
| **Passkey** | Claves WebAuthn / FIDO2 de hardware o plataforma |

::::note
Existe un endpoint de registro OAuth de Google en el código, pero no está expuesto en la UI del dashboard hoy. Usa Email OTP, TOTP o Passkey.
::::

## Flujo de registro

Cada método sigue un patrón de dos pasos:

1. **Iniciar registro** — comienza el registro y recibe datos de configuración (código QR para TOTP, desafío WebAuthn para passkey, o envío OTP para email)
2. **Verificar registro** — confirma con un código válido o aserción de passkey para activar el método

### Email OTP

1. POST inicio de registro → OTP enviado a tu correo
2. Ingresa el código para finalizar el registro

### TOTP (app de autenticación)

1. POST inicio de registro → recibe secreto / código QR
2. Escanea con tu app de autenticación
3. POST verificación con un código de 6 dígitos generado

### Passkey

1. POST inicio de registro → prompt WebAuthn del navegador
2. POST finalización de registro con la respuesta de credencial

## Usar 2FA para acciones protegidas

Las operaciones sensibles del dashboard requieren una sesión 2FA verificada:

1. **Crear desafío** — solicita un desafío para una acción específica (p. ej. creación de clave API)
2. **Verificar** — envía tu OTP, código TOTP o aserción de passkey
3. **Completar acción** — procede dentro de la ventana de sesión verificada

La creación de claves API en `/app/api-keys` usa el middleware `Require2FA()` — sin un método registrado, no puedes crear nuevas claves.

::::warning
Registra al menos un método 2FA antes de intentar crear credenciales API. Consulta [Credenciales API](/es/docs/developers/api-credentials).
::::

## Gestionar métodos

| Acción | Descripción |
| ------ | ----------- |
| List available methods | Métodos que tu organización soporta |
| List enrolled methods | Métodos activos en tu cuenta |
| Delete method | Eliminar un método por ID |

Mantén al menos un método activo para no quedar bloqueado de funciones protegidas del dashboard.

## Gestión de contraseña

Desde `/app/user`, también puedes:

- Ver tu perfil (`GET /user/me`)
- Cambiar contraseña (`PUT /user/change-password`)
- Establecer contraseña inicial (`PUT /user/set-password`)

Estos endpoints requieren autenticación de sesión del dashboard pero no necesariamente un desafío 2FA fresco a menos que la política lo exija.

## Recomendaciones de seguridad

1. **Registra TOTP o passkey** — más resistente a compromiso de email que solo OTP
2. **Registra un método de respaldo** — p. ej. TOTP + passkey, para que un dispositivo perdido no bloquee el acceso
3. **No compartas códigos OTP** — el soporte de Fluxis nunca pedirá tu código 2FA
4. **Revisa métodos registrados** — elimina métodos vinculados a dispositivos perdidos con prontitud

## Autenticación API vs dashboard

::::info
La 2FA aplica solo a **sesiones del Dashboard (colaborador)**. La autenticación REST API usa clave API + secreto → token Bearer y no involucra 2FA en cada llamada API.
::::

Las integraciones se autentican con [Credenciales API](/es/docs/developers/api-credentials); los miembros del equipo se autentican al dashboard con email, contraseña y 2FA.

## Documentación relacionada

- [Credenciales API](/es/docs/developers/api-credentials) — la creación de claves requiere 2FA
- [Equipo y roles](/es/docs/developers/team-and-roles) — niveles de acceso de colaboradores
- [Registro](/es/docs/merchant-integration/sign-up) — incorporación inicial
