Amazon Cognito

Servicio completamente administrado que añade funcionalidad de autenticación y autorización a aplicaciones web y móviles, compatible con login social y federación SAML

Descripción general

Amazon Cognito es un servicio completamente administrado para añadir funcionalidades de registro, inicio de sesión y control de acceso de usuarios a las aplicaciones. Los User Pools funcionan como directorio de usuarios, permitiendo autenticación por email y contraseña, MFA, configuración de políticas de contraseña e implementación de flujos de autenticación personalizados. Soporta proveedores de identidad social como Google, Facebook, Apple y Amazon, así como federación con proveedores SAML 2.0 y OpenID Connect empresariales. Los Identity Pools proporcionan credenciales AWS temporales a usuarios autenticados para acceder directamente a servicios AWS.

Separación de roles entre User Pools e Identity Pools

Cognito se compone de dos componentes principales con roles distintos. Los User Pools son el directorio de usuarios y motor de autenticación, gestionando el registro, inicio de sesión, recuperación de contraseña y MFA. Emiten tokens JWT (ID token, Access token, Refresh token) que la aplicación utiliza para verificar la identidad del usuario. Los Identity Pools (Federated Identities) intercambian tokens de User Pools u otros proveedores de identidad por credenciales AWS temporales (STS), permitiendo el acceso directo a servicios AWS (S3, DynamoDB, etc.) desde el cliente. El patrón típico es: User Pool autentica al usuario y emite tokens, luego Identity Pool intercambia esos tokens por credenciales AWS con roles IAM apropiados. Esta separación permite usar User Pools solo para autenticación de API (verificación de JWT en API Gateway) o usar Identity Pools solo para acceso directo a recursos AWS desde aplicaciones móviles.

Personalización del flujo de autenticación con Lambda Triggers

Cognito proporciona Lambda Triggers que permiten ejecutar funciones Lambda personalizadas en cada punto del flujo de autenticación. Pre Sign-up permite validar o rechazar registros (por ejemplo, permitir solo dominios de email corporativos). Post Confirmation ejecuta acciones después de la verificación del email (crear perfil de usuario en DynamoDB). Pre Authentication permite verificaciones adicionales antes del login (bloqueo por IP, verificación de dispositivo). Post Authentication registra logs de auditoría después del login exitoso. Custom Message personaliza los emails de verificación y recuperación de contraseña. Pre Token Generation permite añadir claims personalizados a los tokens JWT. Define Auth Challenge y Create/Verify Auth Challenge permiten implementar flujos de autenticación completamente personalizados (autenticación por SMS, CAPTCHA, preguntas de seguridad). Estos triggers permiten implementar requisitos de negocio complejos sin modificar el flujo base de Cognito.

Funciones de seguridad y protección contra acceso no autorizado

Cognito incluye funciones avanzadas de seguridad para proteger las cuentas de usuario. La autenticación adaptativa evalúa el riesgo de cada intento de login basándose en factores como dispositivo, ubicación y patrón de comportamiento, requiriendo MFA adicional para intentos de alto riesgo. La protección contra credenciales comprometidas verifica si las credenciales del usuario aparecen en bases de datos de brechas conocidas y fuerza el cambio de contraseña. La protección contra ataques de fuerza bruta bloquea temporalmente las cuentas después de múltiples intentos fallidos. Las políticas de contraseña configurables permiten definir requisitos de longitud mínima, caracteres especiales, mayúsculas y números. El MFA soporta TOTP (aplicaciones autenticadoras) y SMS. Los tokens de acceso tienen expiración configurable (por defecto 1 hora) y los refresh tokens permiten renovar sesiones sin re-autenticación (configurable hasta 10 años). La integración con WAF permite proteger los endpoints de Cognito contra ataques DDoS y bots.

共有するXB!