Cognito
📘 ¿Qué es Amazon Cognito?
Amazon Cognito es un servicio administrado de autenticación, autorización y gestión de usuarios para aplicaciones web y móviles. Permite:
-
Registrar, autenticar y administrar usuarios.
-
Iniciar sesión mediante proveedores de identidad (como Google, Facebook, Apple, etc.).
-
Integrarse con sistemas corporativos de identidad (SAML/OIDC).
-
Emitir tokens JWT compatibles con OAuth 2.0 / OpenID Connect.
🧠 Componentes clave
1. User Pools
Gestión de usuarios finales
-
Directorio de usuarios que pueden:
-
Registrarse
-
Confirmar su cuenta por correo/SMS
-
Iniciar sesión con credenciales
-
-
Incluye:
-
Login/Signup
-
Multi-Factor Auth (MFA)
-
Recuperación de contraseña
-
Grupos de usuarios
-
Personalización de atributos
-
-
Devuelve tokens JWT: ID token, Access token, Refresh token
2. Identity Pools (Federated Identities)
Gestión de identidad temporal de AWS
-
Permite dar acceso a recursos de AWS (S3, DynamoDB, etc.) a usuarios autenticados
-
Soporta:
-
Usuarios autenticados desde User Pool
-
Proveedores externos (Google, Facebook, Apple)
-
SAML corporativo
-
-
Crea credenciales temporales (STS) para acceso programático a servicios AWS
3. Hosted UI
-
Interfaz de login lista para usar
-
Personalizable con logo, colores, texto
-
Opción para usar OAuth 2.0 con redirect URI
-
Compatible con login por:
-
Usuario/contraseña
-
Proveedores sociales
-
Proveedores corporativos
-
🔐 Tokens generados por User Pool
| Token | Uso principal |
|---|---|
| ID Token | Información del usuario (claims) |
| Access Token | Acceso a APIs protegidas con scopes |
| Refresh Token | Obtener nuevos tokens sin relogin |
🌍 Proveedores soportados
| Tipo | Ejemplos |
|---|---|
| Social | Google, Facebook, Apple, Amazon |
| Enterprise | SAML 2.0 (Azure AD, Okta, etc.) |
| Custom/OIDC | Cualquier proveedor con OpenID Connect |
| Usuario propio | Desde el User Pool directamente |
⚙️ Características adicionales
-
MFA (SMS o TOTP tipo Google Authenticator)
-
Password policies personalizables
-
Integración con Lambda para:
-
Validación previa al registro
-
Modificar tokens
-
Post-login
-
-
Webhooks y triggers para procesos personalizados
💰 Precios (referencia)
| Funcionalidad | Costo aproximado (primeros 50k MAU gratuitos) |
|---|---|
| User Pool (MAU) | ~$0.0055 por usuario adicional |
| Identity Pool (STS creds) | Gratis si se mantiene dentro del límite |
| SMS para MFA o verificación | Se cobra por mensaje (según país) |
🧠 Preguntas tipo certificación
-
¿Cuál componente permite autenticación con usuario/contraseña?
- ✅ User Pool
-
¿Cuál componente entrega credenciales temporales de AWS?
- ✅ Identity Pool
-
¿Puedo usar Cognito con login social como Google o Facebook?
- ✅ Sí
-
¿Qué token contiene la información del perfil del usuario?
- ✅ ID Token (JWT)
-
¿Qué puedes usar para personalizar la autenticación de usuarios?
- ✅ Lambda Triggers
📦 Ejemplo de arquitectura
[Usuario móvil o web]
↓
Hosted UI (OAuth 2.0)
↓
Cognito User Pool → ID/Access/Refresh Tokens
↓
Identity Pool → STS Credentials
↓
Acceso a S3, DynamoDB, API Gateway, etc.
🛠️ Casos de uso comunes
| Caso | Cognito aplicable |
|---|---|
| Autenticación para app móvil | ✅ User Pool + Hosted UI |
| Login con Facebook/Google | ✅ User Pool (Federación) |
| Acceso a S3 post-login | ✅ Identity Pool (STS) |
| Control de acceso por grupo | ✅ User Pool + IAM roles por grupo |
| MFA por SMS o App | ✅ Integrado |
🧰 Integración con otros servicios
-
API Gateway: Usa JWT de Cognito para proteger endpoints
-
AppSync (GraphQL): Autenticación y autorización integrada
-
IAM roles: Condiciones por
cognito:groups,cognito:username -
AWS Lambda: Triggers para lógica personalizada (pre-signup, post-login, etc.)
-
Amplify: Abstracción que simplifica la integración con Cognito