Autenticar a usuarios finales con Amazon Cognito

Implementación de aplicaciones en AWS

Dunieski Otano

Amazon Web Services Solutions Architect

¿Crear tu propio login?

  • Una app nueva necesita registro e inicio de sesión completos
  • El equipo empieza a crear la autenticación desde cero
  • Cognito ya hace esto de forma segura

Elegir la autenticación gestionada de Amazon Cognito en lugar de crear un login a medida

Implementación de aplicaciones en AWS

User pools vs identity pools

Cognito User Pool como directorio de usuarios que emite tokens a la izquierda, Identity Pool que canjea un token validado por credenciales temporales de AWS en el centro, servicios de AWS a la derecha

  • User pool: directorio gestionado de usuarios finales
  • Gestiona registro, inicio de sesión y emite tokens
  • Identity pool: canjea un login por credenciales de AWS
  • Úsalos juntos: autentica y luego autoriza acceso a AWS
Implementación de aplicaciones en AWS

Los tres tokens de Cognito

  • ID token: quién es el usuario (claims de identidad)
  • Access token: qué puede invocar el usuario
  • Refresh token: obtener tokens nuevos sin volver a iniciar sesión
  • Los tres son JWT que puedes decodificar y validar

Tres tokens JWT de Cognito lado a lado: ID token con claims de identidad, access token con scopes de permiso de API, refresh token marcado como de larga duración para renovación silenciosa

Implementación de aplicaciones en AWS

Identidad federada

  • Federation: iniciar sesión con un proveedor externo de identidad
  • Social: Google, Facebook, Apple
  • Empresa: proveedores SAML y OIDC
  • Cognito media la confianza y emite sus propios tokens

Federación en Cognito: la persona usuaria elige un proveedor social (Google, Facebook) o empresarial SAML/OIDC; Cognito valida el login externo y emite sus tokens estándar

Implementación de aplicaciones en AWS

Cognito como autorizador de API Gateway

Autorizador de Cognito en API Gateway: el cliente envía el encabezado Authorization con el access token; el gateway valida contra el user pool antes de ejecutar Lambda; tokens no válidos se rechazan con 401

  • API Gateway puede usar un Cognito authorizer
  • El cliente envía su token en el Authorization header
  • API Gateway valida el token antes de que se ejecute el backend
  • Tokens no válidos o caducados se rechazan en el borde
Implementación de aplicaciones en AWS

Flujo típico: inicio de sesión → llamada a API

  • La persona usuaria inicia sesión en el user pool
  • Recibe tokens ID, access y refresh
  • El cliente llama a API Gateway con el access token
  • El autorizador de Cognito valida y luego se ejecuta el backend

Flujo de inicio de sesión a llamada de API: la persona usuaria inicia sesión en el user pool y recibe tokens; el cliente envía el access token a API Gateway; el autorizador de Cognito lo valida; se ejecuta la Lambda del backend

Implementación de aplicaciones en AWS

Errores comunes en Cognito

  • Enviar el ID token donde corresponde un access token
  • Confundir user pools con identity pools
  • Intentar autorizar acceso a AWS solo con un user pool
  • Guardar tokens de forma insegura en el cliente

Errores comunes con Cognito: enviar el ID token a una API en lugar del access token, confundir user pool e identity pool, y guardar tokens de forma insegura en el cliente

Implementación de aplicaciones en AWS

¡Vamos a practicar!

Implementación de aplicaciones en AWS

Preparing Video For Download...