Qué es
Amazon Cognito gestiona la identidad de los usuarios finales de tus aplicaciones: registro, inicio de sesión, recuperación de contraseña, MFA (Multi-Factor Authentication: inicio de sesión con un segundo factor) y federación con proveedores externos. Tras autenticar, emite tokens JWT (JSON Web Token: token firmado con datos del usuario) que tu backend puede validar sin mantener su propia base de datos de usuarios. También puede entregar credenciales temporales de AWS para que una app acceda directamente a servicios como S3 (Simple Storage Service).
Conceptos clave
- User pool (grupo de usuarios): directorio de usuarios y proveedor de autenticación. Emite tres tokens: ID token (quién es el usuario), access token (qué puede hacer, con scopes y grupos) y refresh token (para renovar los anteriores).
- Identity pool (grupo de identidades): intercambia una identidad (de un user pool, de Google, de SAML (Security Assertion Markup Language: estándar de inicio de sesión federado) o incluso anónima) por credenciales temporales de AWS asociadas a un rol IAM (Identity and Access Management).
- Federación: inicio de sesión con proveedores sociales (Google, Apple, Facebook, Amazon), SAML u OIDC (OpenID Connect: estándar de identidad sobre OAuth 2.0).
- Grupos: agrupan usuarios; su nombre viaja en el token
(
cognito:groups) y pueden asociarse a un rol IAM. - Disparadores Lambda: personalizan el flujo (antes del registro, tras confirmar, antes de generar el token, migración de usuarios, etc.).
- Managed login (antes Hosted UI (User Interface: interfaz de usuario)): páginas de inicio de sesión alojadas por Cognito, con OAuth 2.0 y OIDC.
- Planes de funciones: Lite, Essentials y Plus. Plus añade protección frente a amenazas, como detectar contraseñas comprometidas o inicios de sesión de riesgo.
Casos de uso típicos
- Login de una SPA (Single-Page Application: web de una sola página) o app móvil sin programar tu propio sistema de autenticación.
- Proteger una API (Application Programming Interface: interfaz para que los programas se comuniquen) de API Gateway con un autorizador de Cognito/JWT.
- Autenticación en un Application Load Balancer, que puede delegar el login en Cognito.
- Que una app móvil suba ficheros directamente a S3 con credenciales temporales (identity pool).
- Acceso de invitados (usuarios no autenticados) con permisos muy reducidos.
Cuándo NO usarlo
- Para dar acceso de los empleados a la consola o a cuentas de AWS: eso es IAM Identity Center.
- Para permisos entre servicios de AWS: eso son roles IAM.
- Si ya tienes un proveedor de identidad completo y solo necesitas validar sus JWT, API Gateway puede hacerlo directamente con un autorizador JWT sin Cognito.
Comparativa con servicios parecidos
| Necesidad | User pool | Identity pool | IAM Identity Center |
|---|---|---|---|
| ¿Para quién? | Clientes de tu app | Clientes de tu app | Empleados |
| ¿Qué entrega? | Tokens JWT | Credenciales temporales de AWS | Acceso SSO (Single Sign-On: un único inicio de sesión para varias aplicaciones) a cuentas y apps |
| Uso típico | Login y autorización en tu API | Acceso directo a S3, DynamoDB… | Consola y CLI (Command Line Interface: línea de comandos) de AWS |
Modelo de precios
Se paga por usuarios activos al mes (MAU), según el plan de funciones. Hay un nivel gratuito para un número de MAU que no caduca. La federación con SAML u OIDC y el envío de SMS (para MFA o verificación) tienen coste aparte. Los identity pools no tienen coste propio.
Seguridad y alta disponibilidad
- Las contraseñas nunca pasan por tu backend: el cliente habla con Cognito (protocolo SRP (Secure Remote Password: protocolo de inicio de sesión sin enviar la contraseña)).
- MFA por TOTP (Time-based One-Time Password: código temporal de una app autenticadora), SMS o correo; políticas de contraseña configurables.
- En clientes públicos (SPA, móvil) no se usa secreto de cliente, sino OAuth con PKCE (Proof Key for Code Exchange: protege el flujo de OAuth en apps sin secreto).
- Access token de vida corta y refresh token revocable.
- Es un servicio regional gestionado y replicado entre zonas de disponibilidad.
Así lo uso en Kopi
Kopi usa un user pool con login por correo y contraseña directamente desde la web y la app
Android, sin Hosted UI. Tres grupos (ADMIN, USERS y
PENDING) controlan el acceso. Un disparador Pre sign-up evita la
confirmación automática, porque cada alta la aprueba un administrador a mano. API Gateway valida
el JWT en cada petición y las Lambdas leen el grupo del token. Los correos de verificación
salen por SES (Simple Email Service) con dominio propio, para que no acaben en spam.
Trampas de examen
- "Usuarios de la aplicación" o "login social": Cognito (user pool). "Empleados" o "SSO a cuentas": IAM Identity Center.
- "Acceso directo desde la app móvil a S3 o DynamoDB": identity pool (credenciales temporales), nunca claves embebidas en la app.
- "Usuarios invitados o no autenticados": identity pool con identidades no autenticadas.
- Un user pool no da acceso a servicios de AWS por sí solo; para eso hace falta un identity pool o validar el token en tu API.
Preguntas de práctica
Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.
Fuentes
- What is Amazon Cognito?, documentación de AWS (consultada el 25/09/2026).
- Amazon Cognito identity pools, documentación de AWS (consultada el 25/09/2026).
- User pool feature plans, documentación de AWS (consultada el 25/09/2026).