Al activar la verificación en dos pasos, la persona recibe 8 códigos de recuperación de un solo uso. Sirven cuando no tiene el teléfono a mano: al ingresar y al recuperar la contraseña puede escribir uno en lugar del código de la aplicación. Cada uso le envía un aviso por correo.
Trazo solo guarda el hash SHA-256 de cada código. Por eso no puede mostrarlos de nuevo: si la persona los pierde o se le acaban, genera unos nuevos desde Mi cuenta. Este diagrama muestra ese camino. Cuando quedan 2 o menos, Mi cuenta muestra un aviso para generarlos.
Paso a paso
- PersonaPulsa "Generar códigos nuevos" en Mi cuenta
Mi cuenta dice cuántos códigos quedan y avisa cuando son 2 o menos.
- NavegadorPide el código actual de la aplicación
Diálogo
AppCodeDialog, que avisa que los códigos anteriores dejarán de servir. - PersonaEscribe el código de la aplicación
- NavegadorEnvía POST /auth/mfa/recovery-codes
Límite
mfa: 5 por minuto por persona. - API¿Tiene el MFA activo?
- API¿Código válido y sin usar?
El mismo control del ingreso: ventana de ±30 s y un código ya usado no vuelve a servir.
- Base de datosBorra los anteriores y guarda 8 nuevos con hash
- CorreoAviso de códigos regenerados
- NavegadorMuestra los 8 códigos una sola vez
Con "Copiar todos" y "Descargar .txt".
Qué ve la persona en cada error
| Código | HTTP | Cuándo | Mensaje en pantalla |
|---|---|---|---|
MFA_NOT_ENABLED | 409 | La cuenta ya no tiene el MFA (por ejemplo, un Super admin lo restableció) | Tu cuenta no tiene activa la verificación en dos pasos. Recarga la página para ver su estado actual. |
MFA_CODE_INVALID | 422 | El código no corresponde | El código no es correcto. Escribe el que muestra ahora tu aplicación de autenticación. |
MFA_CODE_ALREADY_USED | 422 | El código ya se usó en esa ventana de 30 s | Ese código ya se usó. Espera a que tu aplicación muestre uno nuevo (cambia cada 30 segundos) y escríbelo. |
TOO_MANY_REQUESTS | 429 | Más de 5 intentos en un minuto | Hiciste demasiados intentos seguidos. Espera {wait} y vuelve a intentarlo. |
Dónde está en el código
RegenerateRecoveryCodes: reemplazo de los códigos y aviso.RecoveryCode: generación, normalización y hash.VerifyMfa: uso de un código al ingresar.AccountPageyRecoveryCodesPanel: conteo, aviso y entrega.- Explicación del módulo: Módulo Auth.