Autenticación de usuarios con Amazon Cognito - Diseño de User Pool e Identity Pool
Explicamos la autenticación de usuarios con Cognito User Pool, el acceso a recursos AWS con Identity Pool y la integración de inicio de sesión social.
Descripción general de Cognito
Cognito es un servicio que proporciona autenticación, autorización y gestión de usuarios para aplicaciones web y móviles, y el nivel Essentials, el predeterminado para los nuevos grupos de usuarios, incluye una capa gratuita de hasta 10,000 MAU (usuarios activos mensuales) al mes por cuenta o por AWS organization (según la página oficial de precios, a fecha de agosto de 2026). La capa gratuita no es por grupo de usuarios, por lo que dividir los grupos no la aumenta. La capa gratuita cubre dos niveles, Lite y Essentials, y el nivel superior, Plus, no tiene capa gratuita. User Pool es un directorio de usuarios que gestiona registro, inicio de sesión y MFA. Identity Pool emite credenciales temporales de AWS a usuarios autenticados, permitiendo el acceso directo a recursos de AWS. Admite el inicio de sesión social (Google, Facebook, Apple, Amazon) y la federación SAML/OIDC, y puede añadir un IdP externo registrando el proveedor en la consola de administración y asignándolo a un cliente de aplicación. Sin embargo, el mapeo de atributos, la adaptación de los ámbitos y la verificación del comportamiento al cerrar sesión requieren cada uno un diseño individual.
Diferenciación entre User Pool e Identity Pool
User Pool emite tokens JWT (token de ID, token de acceso, con período de validez configurable de 5 minutos a 1 día) que se verifican con el autorizador de API Gateway. Identity Pool recibe tokens de User Pool y devuelve credenciales temporales de AWS basadas en roles IAM. Cuando el frontend sube archivos a S3, se llama directamente al SDK de S3 usando credenciales obtenidas de Identity Pool. Los triggers Lambda permiten implementar restricciones de dominio de email en Pre Sign-up, envío de emails de bienvenida en Post Confirmation y adición de claims personalizados en Pre Token Generation. El principio de elección es claro: si solo se necesita autenticación de API backend, los JWT de User Pool son suficientes; si los clientes necesitan llamar directamente a recursos AWS (S3, DynamoDB, AppSync), se combina con Identity Pool.
Protección contra amenazas y managed login
La protección contra amenazas (threat protection) de Cognito proporciona autenticación adaptativa basada en el riesgo, que determina dinámicamente la necesidad de MFA según el nivel de riesgo (dispositivo, dirección IP, historial de inicio de sesión). También incluye la detección de credenciales comprometidas, el registro y el análisis de los perfiles de amenazas y de la actividad de los usuarios, y su exportación, y estas funciones solo pueden utilizarse en el plan de funciones Plus (su nombre anterior era funciones de seguridad avanzada = advanced security features; según la página oficial de precios, a fecha de agosto de 2026). Puede operar de modo que los inicios de sesión desde dispositivos habituales omitan MFA y que los accesos desde dispositivos desconocidos o direcciones IP anómalas exijan MFA. También puede implementar la verificación CAPTCHA o un MFA personalizado usando triggers de Lambda en flujos de autenticación personalizados. Para la pantalla de inicio de sesión, managed login es la forma de oferta actual: la edición de la marca con el editor visual está disponible en Essentials y Plus, y la personalización con CSS, en todos los planes, incluido Lite. La classic hosted UI tradicional sigue estando disponible, pero el editor visual se dirige a las páginas de managed login. La adición de claims personalizados al token de ID puede implementarse con el trigger Pre Token Generation, y la función para personalizar en tiempo de ejecución los ámbitos y los claims del token de acceso está disponible en Essentials y Plus.
Mejores prácticas de diseño y trampas
Estas son tres trampas en las que es fácil caer al adoptar Cognito. Primero, los User Pools tienen atributos que no pueden cambiarse después de la creación (formato del nombre de usuario, atributos obligatorios), por lo que decida el esquema con cuidado en la fase de diseño. Cambiar a "usar email como nombre de usuario" posteriormente requiere recrear el User Pool y migrar usuarios. Segundo, si olvida configurar un dominio personalizado, la URL predeterminada que emite Cognito (amazoncognito.com) genera desconfianza en los usuarios desde el punto de vista de la prevención del phishing. Le recomendamos que configure un dominio propio combinado con un certificado de ACM. Tercero, preste atención al tiempo de respuesta de los triggers de Lambda. Cognito invoca las funciones de Lambda de forma síncrona, y la función debe responder en un plazo de 5 segundos (el trigger Custom sender, que no espera la respuesta, es una excepción). Este tiempo de espera está fijado en 5 segundos en el lado de Cognito y no puede cambiarse aunque extienda el tiempo de espera configurado en la función de Lambda (según la documentación oficial, a fecha de agosto de 2026). Si Pre Token Generation llama a una API externa, la latencia excesiva hace que falle la emisión de tokens y que los usuarios no puedan iniciar sesión. Para las llamadas externas, intercale una capa de caché o sepárelas fuera del trigger como procesamiento asíncrono, y diseñe el trigger para ejecutar dentro de él solo el procesamiento que quepa con certeza en 5 segundos.
Comparación con Auth0 y Firebase Authentication
Los competidores de Cognito incluyen Auth0 y Firebase Authentication. Auth0 sobresale en la facilidad de uso de la consola de administración y en la calidad de la documentación, y ofrece abundantes presets para flujos de autenticación complejos (multitenencia basada en Organization, autenticación escalonada). Como el precio de cada servicio varía según la composición de los planes y los complementos, resulta fiable decidir de antemano los MAU previstos y las funciones necesarias, y hacer la estimación en la página oficial de precios de cada uno. Firebase Authentication se integra naturalmente con el ecosistema de Google (Firestore, Cloud Functions), pero en arquitecturas centradas en AWS requiere implementación adicional para la integración con roles IAM. La mayor fortaleza de Cognito es la integración nativa con servicios AWS (autorizadores de API Gateway, mapeo de roles IAM de Identity Pool, conexión directa con AppSync), proporcionando mínima fricción al construir backends centrados en AWS. Si quiere personalizar en detalle la pantalla de autenticación, compruebe antes si el editor visual de managed login (Essentials y Plus) y la personalización con CSS (todos los planes) cumplen los requisitos; si no los cumplen, también tiene la opción de construir su propia pantalla de autenticación con los componentes de Amplify UI.
Precios de Cognito
(A fecha de agosto de 2026, Norte de Virginia us-east-1 y Tokio ap-northeast-1) Cognito tiene seis ejes de facturación. Son los MAU de los grupos de usuarios (por plan de funciones), los MAU de los usuarios de federación SAML 2.0 / OIDC, las solicitudes de tokens de la autorización de máquina a máquina (M2M), el aumento de la tasa de solicitudes de la API, la replicación multirregión y, por último, el complemento de las antiguas funciones de seguridad avanzada (ASF). La autenticación y la emisión de identificadores únicos de Identity Pool son gratuitas, y tampoco hay cargo por el número de clientes de aplicación M2M registrados. Los planes de funciones de los grupos de usuarios tienen tres niveles, Lite, Essentials y Plus, y el predeterminado para los nuevos grupos de usuarios es Essentials. El precio unitario es por MAU (la unidad en Price List es CognitoUserPoolsMAU): Essentials cuesta 0.015 USD/MAU y Plus, 0.020 USD/MAU, ambos con el mismo precio en las dos regiones. Lite tiene un esquema escalonado de cuatro tramos, y todos los límites de tramo están indicados explícitamente en la tabla de tramos de la página oficial de precios y en los datos públicos de Price List. Los primeros 90,000 MAU facturables (hasta 100,000 MAU en total, incluida la capa gratuita de 10,000) cuestan 0.0055 USD/MAU; los siguientes 900,000 MAU (hasta 1,000,000 MAU en total), 0.0046 USD/MAU; los siguientes 9,000,000 MAU (hasta 10,000,000 MAU en total), 0.00325 USD/MAU, y lo que supera esa cantidad, 0.0025 USD/MAU. Los usuarios de federación SAML 2.0 / OIDC son gratuitos hasta 50 MAU con independencia de la composición de planes, y el excedente cuesta 0.015 USD/MAU.
| Aspecto | Lite | Essentials (predeterminado para nuevos grupos de usuarios) | Plus |
|---|---|---|---|
| Posicionamiento | El conjunto de funciones de grupos de usuarios ofrecido hasta el 22 de noviembre de 2024 (excluyendo ASF) | Todas las funciones de Lite + managed login + inicio de sesión sin contraseña (passkeys, correo electrónico, SMS) + personalización del token de acceso + prohibición de reutilizar contraseñas | Todas las funciones de Essentials + protección contra amenazas (autenticación adaptativa, detección de credenciales comprometidas, exportación de registros de eventos de autenticación) |
| Pantalla de inicio de sesión | Solo personalización con CSS | Editor visual + personalización con CSS | Editor visual + personalización con CSS |
| MFA | Códigos de un solo uso mediante aplicación de autenticación y SMS | Lo mismo que Lite + códigos de un solo uso por correo electrónico | Lo mismo que Essentials + aplicación basada en el riesgo |
| Capa gratuita (al mes, por cuenta u organization) | 10,000 MAU | 10,000 MAU | Ninguna (todos los MAU son facturables) |
| Precio unitario del excedente (mismo precio en Norte de Virginia y Tokio) | Desciende por tramos desde 0.0055 USD/MAU | 0.015 USD/MAU | 0.020 USD/MAU |
| Replicación multirregión | No disponible | Disponible como complemento (0.0045 USD/MAU) | Disponible como complemento |
Las unidades de los complementos son distintas en cada caso. La autorización M2M se factura por cada respuesta de token correcta: las primeras 250,000 solicitudes cuestan 0.00225 USD por solicitud de token (unidad: CognitoUserPools-M2MTokens); las siguientes 4,750,000 solicitudes (hasta 5,000,000 solicitudes), 0.0015 USD, y lo que supera las 5,000,000 solicitudes, 0.001125 USD. Cuando se usa junto con la replicación multirregión, el primer tramo cuesta 0.002925 USD. El aumento de la tasa de solicitudes de la API es un cargo mensual por cada 1 RPS de incremento por encima de la cuota predeterminada, facturado por separado para cada categoría de API (unidad: CognitoUserPoolsRPSMo; período mínimo de 1 día). Si se aplica durante todo el mes, cuesta 20.00 USD por cada 1 RPS de incremento; si se aplica solo durante una parte del mes, 45.00 USD por cada 1 RPS de incremento se prorratean por días. El antiguo complemento ASF es un esquema escalonado de cinco tramos por MAU: los primeros 50,000 MAU cuestan 0.05 USD/MAU; los siguientes 50,000 MAU, 0.035 USD/MAU; los siguientes 900,000 MAU (hasta 1,000,000 MAU), 0.02 USD/MAU; los siguientes 9,000,000 MAU (hasta 10,000,000 MAU), 0.015 USD/MAU, y lo que supera esa cantidad, 0.01 USD/MAU. ASF no tiene capa gratuita, y el hecho de que todos los MAU sean facturables sin descontar la capa gratuita de 10,000 MAU es lo que lo diferencia de Essentials y Plus. Hay cinco puntos sobre la capa gratuita y las excepciones. Primero, la capa gratuita de 10,000 MAU para el inicio de sesión directo o a través de un IdP social solo corresponde a Lite y Essentials, y Plus no tiene capa gratuita. No caduca con los 12 meses de la capa gratuita de AWS y corresponde indefinidamente tanto a clientes existentes como nuevos, pero no corresponde en AWS GovCloud (US). Segundo, los grupos existentes creados el 22 de noviembre de 2024 o antes conservan la capa gratuita de los primeros 50,000 MAU. Tercero, ASF no se ofrece a nuevos clientes y es un complemento que los clientes que ya usan ASF pueden seguir utilizando con el precio anterior (según la información de AWS, Plus ofrece un ahorro de hasta el 60% frente a ASF; ASF no está disponible en AWS GovCloud (US-West)). Cuarto, las solicitudes de tokens M2M no tienen capa gratuita. Quinto, por los SMS enviados para MFA, el registro, la recuperación de contraseñas y la verificación del número de teléfono se cobran aparte las tarifas de Amazon SNS, y por los correos electrónicos enviados para el registro, la recuperación de contraseñas y la verificación de la dirección de correo electrónico, las tarifas de Amazon SES. Como ejemplo de cálculo, con Essentials y 950,000 MAU el costo es (950,000 - 10,000) × 0.015 USD = 14,100 USD al mes, y la misma escala con Plus, que no tiene capa gratuita, cuesta 950,000 × 0.020 USD = 19,000 USD al mes. Con facturación basada en MAU, los usuarios registrados que no inician sesión no afectan los costos.
Resumen
Cognito es un servicio que proporciona autenticación de usuarios con User Pool y acceso a recursos AWS con Identity Pool. Se integra con IdP externos mediante el inicio de sesión social y la federación SAML/OIDC, y, en el plan de funciones Plus, puede aplicar dinámicamente MFA basado en el riesgo mediante la protección contra amenazas. La integración nativa con servicios AWS es su mayor fortaleza, y el diseño cuidadoso del esquema del User Pool en la etapa inicial es clave para la operación a largo plazo.
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.
- Amazon Cognito (página oficial)
- AWS Lambda (página oficial)
- Amazon API Gateway (página oficial)
- Documentación de AWS (oficial)
Si esta página y la documentación oficial difieren, prevalece la documentación oficial.