Al crear una aplicacion, inevitablemente te enfrentas a dos preguntas: como verifico quien es esta persona, y a que deberia tener acceso? Amazon Cognito e IAM son los servicios de AWS que resuelven exactamente estos problemas.
Las preguntas del examen DVA-C02 en esta area se centran en quien puede llamar a esta API y como autenticar usuarios.
Que es Amazon Cognito?
Piensa en Cognito como el sistema de gestion de miembros y mostrador de pases de acceso de tu aplicacion. En lugar de construir tu propio servidor de inicio de sesion, AWS se encarga del registro de usuarios, inicio de sesion y autenticacion.
Cognito se divide en dos componentes principales.
Cognito User Pools — Quien eres? (Autenticacion)
Este componente verifica la identidad de un usuario cuando inicia sesion en tu aplicacion, como un guardia de seguridad verificando credenciales en la entrada de un edificio.
Cuando un usuario inicia sesion exitosamente, Cognito User Pools emite un token JWT, un certificado digital que dice esta persona es un usuario autenticado.
Funciones disponibles en User Pools: Inicio de sesion social (Google, Facebook, Apple) Federacion de identidad empresarial (SAML/OIDC) Autenticacion multifactor (MFA), politicas de contrasena Codigos de verificacion por email/SMS Interfaz de inicio de sesion alojada por AWS (pagina de login lista para usar)
Cognito Identity Pools — Que puedes hacer? (Autorizacion)
Este componente distribuye llaves de acceso a AWS a usuarios que ya han sido autenticados. Por ejemplo, puede emitir credenciales AWS temporales para que un usuario de app movil pueda subir archivos directamente a su bucket S3.
Si User Pools es verificar el pase, Identity Pools es emitir tarjetas de acceso a cada piso del edificio.
Se pueden otorgar diferentes permisos a usuarios autenticados y usuarios invitados no autenticados Presenta el token JWT de User Pools a Identity Pools para canjearlo por credenciales AWS temporales
Flujo tipico: El usuario inicia sesion en User Pool → recibe token JWT → canjea token en Identity Pool por credenciales AWS → accede directamente a recursos AWS como S3 y DynamoDB
!Cognito User Pools vs Identity Pools
Autorizadores de API Gateway
API Gateway es la puerta principal de tu aplicacion. Cuando alguien llama a una API, necesita verificar que realmente tiene permiso para hacerlo. Esta funcion de verificacion la realiza un Autorizador.
| Tipo | Descripcion | Cuando usarlo | |------|-------------|---------------| | Autorizador Cognito | Valida tokens JWT de Cognito User Pools. No requiere codigo personalizado. | Cuando los usuarios de la app llaman a tu API | | Autorizador Lambda | Logica de autenticacion personalizada implementada como funcion Lambda. | Al usar formatos de token especiales o sistemas de autenticacion de terceros | | Autorizador IAM | Las solicitudes se firman con AWS Signature V4. | Cuando los servicios AWS se llaman entre si internamente |
Autenticacion de usuarios normales de la app → Autorizador Cognito Sistemas heredados o autenticacion personalizada → Autorizador Lambda Llamadas entre servicios AWS → Autorizador IAM
STS (Security Token Service)
STS emite credenciales AWS temporales, como un pase de visitante valido solo por hoy. En lugar de contrasenas permanentes, usa llaves temporales de corta duracion, lo que es mucho mas seguro.
AssumeRole: Tomar prestado temporalmente un rol en otra cuenta AWS para acceder a sus recursos AssumeRoleWithWebIdentity: Canjear un token de inicio de sesion web (ej. de Google) por credenciales AWS GetSessionToken: Emitir un token temporal despues de la autenticacion MFA
Puntos clave del examen
"Registro/inicio de sesion de usuarios en app movil/web" -- Cognito User Pool
"Emitir credenciales AWS a usuarios autenticados" -- Cognito Identity Pool
"Validar token JWT en API Gateway" -- Autorizador Cognito
"Logica de autenticacion personalizada" -- Autorizador Lambda
"Autenticacion de llamadas AWS entre servicios" -- Autorizador IAM (Sig V4)
"Asumir rol en otra cuenta" -- STS AssumeRole
User Pool = Autenticacion (quien eres), Identity Pool = Autorizacion (que puedes hacer)