MFA adaptativo y puntuación de riesgo
El MFA tradicional es binario: o cada inicio de sesión requiere un segundo factor, o ninguno lo requiere. Esto crea una tensión entre seguridad (siempre requerir MFA) y experiencia de usuario (el MFA añade fricción). El MFA adaptativo resuelve esta tensión requiriendo autenticación adicional solo cuando el inicio de sesión parece arriesgado.
Auris implementa MFA adaptativo a través de un motor de puntuación de riesgo que evalúa cada intento de autenticación en cinco dimensiones. Cuando la puntuación de riesgo calculada supera un umbral configurable, Auris escala los requisitos de autenticación.
El modelo de puntuación de riesgo de 5 factores
Factor 1: Reputación de IP
El motor evalúa la reputación de la dirección IP de origen.
| Señal | Contribución al riesgo |
|---|---|
| IP residencial limpia | 0 (base) |
| Nodo de salida VPN conocido | +10 a +25 |
| Proxy o anonimizador | +15 a +30 |
| IP de centro de datos / cloud | +10 a +20 |
| IP en lista de bloqueo de abusos conocida | +30 a +50 |
| Nodo de salida Tor | +25 a +40 |
Factor 2: Confianza del dispositivo
El motor compara la huella digital del dispositivo actual con las huellas digitales vistas anteriormente para este usuario.
| Señal | Contribución al riesgo |
|---|---|
| Dispositivo conocido (huella digital vista antes) | 0 (base) |
| Dispositivo nuevo (huella digital nunca vista) | +15 a +25 |
| Cálculo de huella digital fallido | +10 |
Las huellas digitales de dispositivos se calculan como un hash SHA-256 de características del navegador (user agent, resolución de pantalla, zona horaria, idioma, plugins instalados).
Factor 3: Anomalía geográfica (viaje imposible)
El motor comprueba si la ubicación del inicio de sesión es físicamente plausible dada la historial de inicios de sesión recientes del usuario.
| Señal | Contribución al riesgo |
|---|---|
| Misma ciudad que el último inicio de sesión | 0 (base) |
| Mismo país, ciudad diferente | +5 |
| País diferente, tiempo de viaje plausible | +10 a +15 |
| País diferente, tiempo de viaje imposible | +30 a +50 |
La velocidad máxima de viaje predeterminada es 900 km/h (velocidad aproximada de avión comercial). Si la velocidad requerida supera este umbral, el inicio de sesión se marca como viaje imposible.
La detección de viaje imposible considera el uso de VPN. Si la IP se identifica como un nodo de salida VPN, la puntuación de anomalía geográfica se reduce para prevenir falsos positivos en usuarios que cambian de servidor VPN entre inicios de sesión.
Factor 4: Señales de comportamiento
El motor analiza el comportamiento de inicio de sesión del usuario.
| Señal | Contribución al riesgo |
|---|---|
| Hora del día dentro del patrón normal del usuario | 0 (base) |
| Hora inusual (por ejemplo, 3 AM para un usuario que típicamente inicia sesión 9-5) | +5 a +15 |
| Múltiples intentos fallidos de contraseña antes de éxito | +10 a +20 |
| Escritura inusualmente rápida (posible bot) | +5 a +15 |
Factor 5: Inteligencia de amenazas
El motor verifica si las credenciales del usuario aparecen en bases de datos de violaciones conocidas.
| Señal | Contribución al riesgo |
|---|---|
| Contraseña no encontrada en bases de datos de violaciones | 0 (base) |
| Contraseña encontrada en violación conocida | +20 a +40 |
| Dirección de email objetivo de phishing conocido | +10 a +25 |
Umbrales y acciones
La puntuación combinada determina la acción:
| Rango de puntuación | Acción predeterminada |
|---|---|
| 0–24 | Permitir (sin fricción adicional) |
| 25–49 | Requerir MFA si no se completó en esta sesión |
| 50–74 | Requerir MFA independientemente del estado de sesión |
| 75–89 | Requerir MFA + notificar al usuario por email |
| 90–100 | Bloquear inicio de sesión + notificar al usuario + alertar al admin |
Los umbrales son configurables por tenant en Consola → Seguridad → MFA adaptativo.
Claims ACR y AMR
Después de la autenticación, el nivel de autenticación se registra en los tokens:
ACR (Authentication Context Class Reference): El nivel de autenticación alcanzado.
| Valor ACR | Significado |
|---|---|
urn:auris:loa:1 | Solo factor primario (contraseña, magic link) |
urn:auris:loa:2 | Múltiples factores completados |
urn:auris:loa:3 | Múltiples factores + hardware criptográfico (WebAuthn) |
AMR (Authentication Methods Reference): Los métodos de autenticación específicos usados.
| Valor AMR | Método |
|---|---|
pwd | Contraseña |
otp | Contraseña de un solo uso (SMS o TOTP) |
webauthn | WebAuthn / FIDO2 |
magic | Magic link |
social | Social login (Google, GitHub, etc.) |
Tu API puede usar el claim ACR para aplicar políticas de acceso:
const session = await getSession()
if (session.acr < 'urn:auris:loa:2') {
// Requerir escalada de autenticación
return redirect('/auth/step-up')
}