Implementación de la autenticación de usuarios - Construcción de una base de autenticación segura con Cognito

Se explican el diseño y la implementación de una base de autenticación de usuarios que aprovecha Amazon Cognito, y se presenta cómo construir flujos de autenticación con grupos de usuarios, grupos de identidades y la integración con proveedores de identidad externos.

Desafíos de la autenticación de usuarios en las aplicaciones modernas

La autenticación de usuarios es la base de toda aplicación, pero implementar por cuenta propia un sistema de autenticación seguro es un trabajo complejo y de alto riesgo. Los elementos que hay que tener en cuenta son muy variados: el hash de las contraseñas, la gestión de sesiones, la compatibilidad con MFA, las contramedidas contra los ataques de fuerza bruta, la emisión y la verificación de tokens, etc. Amazon Cognito es un servicio que proporciona estas funciones de autenticación de forma totalmente gestionada, de modo que los desarrolladores quedan liberados de implementar la lógica de autenticación y pueden concentrarse en la lógica de negocio de la aplicación. Cognito se puede usar gratis hasta 10,000 usuarios activos al mes en el nivel Essentials, el predeterminado para los grupos nuevos, y se adapta a una amplia gama de escalas, desde startups hasta grandes empresas. Que Cognito permita personalizar los flujos de autenticación con disparadores de Lambda y escribir la lógica en lenguajes conocidos como JavaScript y Python es una gran ventaja para los desarrolladores.

Gestión de la autenticación con grupos de usuarios de Cognito

Un grupo de usuarios de Cognito es un directorio de usuarios que gestiona el registro, el inicio de sesión, el restablecimiento de contraseñas y el MFA de los usuarios. Los grupos de usuarios cumplen con OAuth 2.0 y OpenID Connect y proporcionan flujos de autenticación estándar. Mediante la personalización de la política de contraseñas (longitud mínima y requisitos de mayúsculas / minúsculas / números / símbolos), es posible una configuración adaptada a los requisitos de seguridad de la organización. Como MFA, el TOTP mediante una aplicación de autenticación (Google Authenticator, etc.) y los códigos de un solo uso por SMS están disponibles en todos los niveles (según la documentación oficial a fecha de agosto de 2026). En el nivel Essentials o superiores se pueden activar el MFA con códigos de un solo uso por correo electrónico y el inicio de sesión con claves de acceso que usa autenticadores FIDO2 (según la documentación oficial a fecha de agosto de 2026). La autenticación sin contraseña, en la que se inicia sesión solo con un código de un solo uso, también se puede activar en esos niveles (según la documentación oficial a fecha de agosto de 2026). La autenticación adaptativa basada en riesgos, que exige MFA solo en los intentos de inicio de sesión de alto riesgo, es una función exclusiva del nivel más alto, Plus, y no está disponible en Essentials. Si se usan disparadores de Lambda, se puede insertar lógica personalizada en cada etapa del flujo de autenticación y construir flujos de autenticación flexibles según los requisitos del negocio. A continuación se muestra un ejemplo de creación de un grupo de usuarios con la AWS CLI.

aws cognito-idp create-user-pool \
  --pool-name MyAppUserPool \
  --policies '{"PasswordPolicy": {"MinimumLength": 12, "RequireUppercase": true, "RequireLowercase": true, "RequireNumbers": true, "RequireSymbols": true}}' \
  --mfa-configuration OPTIONAL \
  --auto-verified-attributes email \
  --region ap-northeast-1

La pantalla de inicio de sesión se puede preparar sin implementación propia si se usa la página de inicio de sesión alojada por Cognito. El managed login actual permite configurar con un editor de marca sin código la combinación de colores, el logotipo, la imagen de fondo e incluso el modo oscuro, y también admite flujos con claves de acceso y sin contraseña. No obstante, para usarlo se necesita el nivel Essentials o Plus. El hosted UI (classic) anterior se puede usar en todos los niveles, pero la personalización se limita a sustituir el archivo CSS y la imagen del logotipo.

Grupos de identidades y autenticación federada

Un grupo de identidades de Cognito (identidades federadas) emite credenciales temporales de AWS a los usuarios autenticados y permite el acceso directo a recursos de AWS como S3 y DynamoDB. Además de los usuarios autenticados en un grupo de usuarios, también acepta credenciales de proveedores de identidad sociales como Google, Facebook, Apple y Amazon, y de proveedores de identidad empresariales que cumplen con SAML 2.0 y OpenID Connect. Es posible un diseño que separa los roles autenticados de los no autenticados y concede a los usuarios invitados un acceso limitado de solo lectura y a los usuarios autenticados un acceso ampliado que incluye permisos de escritura. Con el control de acceso basado en atributos (ABAC), se pueden controlar los permisos de acceso de forma dinámica según los atributos del usuario, lo que hace posible una lógica de autorización detallada.

Tabla: Los grupos de usuarios y los grupos de identidades hacen trabajos distintos - Aclaración de dos elementos fáciles de confundir
AspectoGrupo de usuariosGrupo de identidades (identidades federadas)
Trabajo que realizaDirectorio de usuarios. Gestiona el registro, el inicio de sesión, el restablecimiento de contraseñas y el MFAEmite credenciales temporales de AWS a los usuarios autenticados
Estándares que cumple e identidades que aceptaFlujos de autenticación estándar que cumplen con OAuth 2.0 y OpenID ConnectAdemás de los usuarios autenticados del grupo de usuarios, proveedores de identidad sociales como Google, Facebook, Apple y Amazon, y proveedores de identidad empresariales que cumplen con SAML 2.0 y OpenID Connect
Principales puntos de controlPolítica de contraseñas (longitud mínima y requisitos de mayúsculas / minúsculas / números / símbolos). En MFA, el TOTP de la aplicación de autenticación y el SMS en todos los niveles, los códigos de un solo uso por correo electrónico y las claves de acceso en Essentials o superiores, y la autenticación adaptativa basada en riesgos exclusiva de PlusSeparación de los roles autenticados y no autenticados, y control dinámico de permisos mediante el control de acceso basado en atributos (ABAC)
Puntos de extensiónInserción de lógica personalizada en cada etapa del flujo de autenticación con disparadores de Lambda. La pantalla de inicio de sesión se puede preparar con la página de inicio de sesión alojada por Cognito (managed login en Essentials o superiores, classic hosted UI en todos los niveles)Diseño que concede a los usuarios invitados un acceso limitado de solo lectura y a los usuarios autenticados un acceso ampliado que incluye escritura
Usos típicosHacer que el autorizador de Cognito de API Gateway verifique los tokens JWT y rechace los tokens no válidos antes de que lleguen a la APIPermitir que los clientes accedan directamente a recursos de AWS como S3 y DynamoDB

Patrones de integración con API Gateway y Lambda

La integración de Cognito con API Gateway se ha adoptado ampliamente como patrón de autenticación para aplicaciones serverless. Si se configura el autorizador de Cognito de API Gateway, se pueden verificar automáticamente los tokens JWT incluidos en las solicitudes a la API y rechazar las solicitudes con tokens no válidos antes de que lleguen a la API. Dentro de las funciones de Lambda, se pueden obtener el ID de usuario y los atributos personalizados del token verificado y aprovecharlos para el acceso a datos propios de cada usuario y para ramificar la lógica de negocio. Si se usa la biblioteca Amplify, se pueden implementar los flujos de autenticación de Cognito desde una aplicación frontend con unas pocas líneas de código, y la renovación de los tokens y la gestión de las sesiones también se automatizan. Con esta configuración, las capas de autenticación / autorización / procesamiento de la API quedan claramente separadas, y se logra compaginar la seguridad y la facilidad de mantenimiento.

Precios de Cognito

Los grupos de usuarios de Cognito se cobran según el número de usuarios activos mensuales (MAU), y con la revisión de noviembre de 2024 pasaron a un sistema de 3 niveles: Lite / Essentials / Plus. Los siguientes precios unitarios son valores medidos a fecha de agosto de 2026 en Norte de Virginia (us-east-1) y Tokio (ap-northeast-1), y estas 2 regiones tienen el mismo importe. En el nivel Essentials, el predeterminado para los grupos nuevos, el excedente cuesta 0.0150 USD por MAU. El nivel Plus, el más alto, cuesta 0.0200 USD por MAU, y el nivel Lite, que corresponde a la generación anterior, tiene un sistema escalonado que empieza en 0.0055 USD por MAU. Para el inicio de sesión directo y el inicio de sesión mediante proveedores de identidad sociales hay una capa gratuita de 10,000 MAU al mes, pero solo se aplica a los grupos configurados en Lite o Essentials, y Plus no tiene capa gratuita. La capa gratuita se cuenta por cuenta o por AWS Organization y, a diferencia de la capa gratuita de AWS limitada a 12 meses, no tiene fecha de vencimiento. Los grupos existentes creados el 22 de noviembre de 2024 o antes mantienen una capa gratuita de hasta 50,000 MAU. Los usuarios federados mediante proveedores de identidad empresariales SAML 2.0 / OIDC son gratuitos hasta 50 MAU al mes con independencia de la configuración de niveles del grupo, y el excedente cuesta 0.0150 USD por MAU. Las funciones de protección frente a amenazas, como la detección de credenciales comprometidas y la autenticación adaptativa basada en riesgos, se han reorganizado y ahora están incluidas en el nivel Plus. Solo en los grupos que tenían activadas como complemento las antiguas funciones de seguridad avanzada (ASF) se mantienen los precios anteriores. Son 0.0500 USD por MAU para los primeros 50,000 MAU y 0.0350 USD para los siguientes 50,000 MAU (el recargo de ASF en sí no tiene capa gratuita y se cobra desde el primer MAU. La capa gratuita de MAU del propio grupo se mantiene por separado). Como el nivel se puede cambiar en cualquier momento durante la operación, se puede empezar el desarrollo dentro de la capa gratuita y pasar a Plus cuando se necesite la protección frente a amenazas. La capa gratuita de hasta 10,000 MAU es suficiente para muchas startups y, en comparación con los costes de desarrollo / operación de implementar una base de autenticación por cuenta propia, supone un coste mucho más bajo. Compruebe los límites de cada tramo y los precios unitarios más recientes en la página de precios de Cognito de AWS.

Resumen

Amazon Cognito es un servicio que abstrae la complejidad de la autenticación de usuarios como un servicio totalmente gestionado y permite construir rápidamente una base de autenticación segura. Proporciona de forma integrada la gestión de la autenticación con grupos de usuarios, el control del acceso a los recursos de AWS con grupos de identidades y la autenticación federada con proveedores de identidad externos. La capa gratuita de hasta 10,000 usuarios activos al mes (dirigida a los niveles Lite o Essentials) y la personalización flexible con disparadores de Lambda se adaptan a aplicaciones de cualquier escala. Gracias a la integración con API Gateway, se pueden implementar fácilmente las mejores prácticas de autenticación / autorización en arquitecturas serverless, y los desarrolladores pueden concentrarse en la lógica de negocio.

Referencias (recursos oficiales de AWS)

Las fuentes primarias de esta página son el sitio web y la documentación oficiales de AWS. Consulta las páginas oficiales siguientes para conocer las especificaciones y los precios más recientes.

Si esta página y la documentación oficial difieren, prevalece la documentación oficial.

Compartir