July 31, 2025

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

TokenUso principal
ID TokenInformación del usuario (claims)
Access TokenAcceso a APIs protegidas con scopes
Refresh TokenObtener nuevos tokens sin relogin

🌍 Proveedores soportados

TipoEjemplos
SocialGoogle, Facebook, Apple, Amazon
EnterpriseSAML 2.0 (Azure AD, Okta, etc.)
Custom/OIDCCualquier proveedor con OpenID Connect
Usuario propioDesde 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)

FuncionalidadCosto 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ónSe cobra por mensaje (según país)

🧠 Preguntas tipo certificación

  1. ¿Cuál componente permite autenticación con usuario/contraseña?

    • ✅ User Pool
  2. ¿Cuál componente entrega credenciales temporales de AWS?

    • ✅ Identity Pool
  3. ¿Puedo usar Cognito con login social como Google o Facebook?

    • ✅ Sí
  4. ¿Qué token contiene la información del perfil del usuario?

    • ✅ ID Token (JWT)
  5. ¿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

CasoCognito 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


📚 Recursos útiles