¿Qué es Amazon Cognito?
Amazon Cognito es una plataforma de identidad para aplicaciones web y móviles. Es un directorio de usuarios, un servidor de autenticación y un servicio de autorización para los tokens y credenciales de AWS de acceso de OAuth 2.0. Con Amazon Cognito, puede autenticar y autorizar a los usuarios desde el directorio de usuarios integrado, desde el directorio empresarial y desde proveedores de identidad de consumidores como Google y Facebook.
Los dos componentes siguientes componen Amazon Cognito. Funcionan de forma independiente o en conjunto, en función de las necesidades de acceso de los usuarios.
Grupos de usuarios
Cree un grupo de usuarios cuando quiera autenticar y autorizar a los usuarios a la aplicación o la API. Los grupos de usuarios son un directorio de usuarios con funciones de creación, administración y autenticación de usuarios automáticas e impulsadas por el administrador. El grupo de usuarios puede ser un directorio independiente y un proveedor de identidades de OIDC (IdP) y un proveedor de servicios intermedio (SP) para proveedores de terceros de identidades de personal y clientes. Puede proporcionar un inicio de sesión único (SSO) en su aplicación para las identidades de los empleados de su organización en los proveedores de identidad de SAML 2.0 y OIDC con grupos de usuarios. También puede proporcionar SSO en su aplicación para las identidades de clientes de su organización en los almacenes de identidades públicos de OAuth 2.0 de Amazon, Google, Apple y Facebook. Para obtener más información acerca de la gestión de acceso e identidad de los clientes (CIAM), consulte ¿Qué es CIAM?
Los grupos de usuarios no requieren la integración con un grupo de identidades. Desde un grupo de usuarios, puede emitir JSON Web Token (JWT) autenticados directamente a una aplicación, un servidor web o una API.
Grupos de identidades
Configure un grupo de identidades de Amazon Cognito cuando desee autorizar a los usuarios autenticados o anónimos a acceder a los recursos de AWS. Un grupo de identidades emite credenciales de AWS para que la aplicación proporcione recursos a los usuarios. Puede autenticar a los usuarios con un proveedor de identidades de confianza, como un grupo de usuarios o un servicio SAML 2.0. También puede emitir, opcionalmente, credenciales para los usuarios invitados. Los grupos de identidades utilizan un control de acceso basado en roles y atributos para administrar la autorización de los usuarios para acceder a los recursos de AWS.
Los grupos de identidades no requieren la integración con un grupo de usuarios. Un grupo de identidades puede aceptar reclamaciones autenticadas directamente de los proveedores de identidad de los empleados y de los consumidores.
Un grupo de usuarios y un grupo de identidades de Amazon Cognito que se utilizan en conjunto
En el diagrama que comienza este tema, se utiliza Amazon Cognito para autenticar al usuario y, a continuación, concederle acceso a un Servicio de AWS.
-
El usuario de la aplicación inicia sesión a través de un grupo de usuarios y recibe los tokens de OAuth 2.0.
-
La aplicación intercambia un token de grupo de usuarios por un grupo de identidades para obtener credenciales de AWS temporales que puede usar con las API de AWS y la AWS Command Line Interface (AWS CLI).
-
La aplicación asigna la sesión de credenciales al usuario y proporciona acceso autorizado a Servicios de AWS como Amazon S3 y Amazon DynamoDB.
Para ver más ejemplos que utilizan grupos de identidades y grupos de usuarios, consulte Escenarios comunes de Amazon Cognito.
En Amazon Cognito, la obligación de seguridad de la nube del modelo de responsabilidad compartida
Características de Amazon Cognito
Grupos de usuarios
Un grupo de usuarios de Amazon Cognito es un directorio de usuarios. Con un grupo de usuarios, los usuarios pueden iniciar sesión en su aplicación web o móvil por medio de Amazon Cognito o federarse mediante un IdP de terceros. Los usuarios federados y locales tienen un perfil de usuario en el grupo de usuarios.
Los usuarios locales son los inscritos o registrados directamente en el grupo de usuarios. Puede administrar y personalizar estos perfiles de usuario en Consola de administración de AWS, un AWS SDK o la AWS Command Line Interface (AWS CLI).
Los grupos de usuarios de Amazon Cognito aceptan tokens y afirmaciones de IdP de terceros y recopilan los atributos de los usuarios en un JWT que emite a la aplicación. Puede estandarizar la aplicación en un conjunto de JWT mientras Amazon Cognito gestiona las interacciones con los IdP y asigna las reclamaciones a un formato de token central.
Un grupo de usuarios de Amazon Cognito puede ser un IdP independiente. Amazon Cognito se basa en el estándar OpenID Connect (OIDC) para generar JWT para la autenticación y la autorización. Cuando inicia sesión en los usuarios locales, el grupo de usuarios tiene autoridad para esos usuarios. Tiene acceso a las funciones siguientes cuando autentica a los usuarios locales.
-
Implemente su propia frontend web que llama a la API de grupos de usuarios de Amazon Cognito para autenticar, autorizar y administrar los usuarios.
-
Configurar autenticación multifactor (MFA) para los usuarios. Amazon Cognito admite contraseña temporal de un solo uso (TOTP) y MFA por mensaje SMS.
-
Proteja contra el acceso de cuentas de usuario que estén bajo control malintencionado.
-
Cree sus propios flujos de autenticación de varios pasos personalizados.
-
Busque usuarios en otro directorio y mígrelos a Amazon Cognito.
Un grupo de usuarios de Amazon Cognito también puede cumplir una doble función como proveedor de servicios (SP) para los IdP y como IdP para la aplicación. Los grupos de usuarios de Amazon Cognito se pueden conectar a IdP de consumidores, como Facebook y Google, o a IdP del personal, como Okta y Active Directory Federation Services (ADFS).
Con los tokens de OAuth 2.0 y OpenID Connect (OIDC) que emite un grupo de usuarios de Amazon Cognito, puede
-
Aceptar un ID de token en la aplicación que autentica a un usuario y proporciona la información que necesita para configurar el perfil del usuario.
-
Aceptar un token de acceso en la API con los ámbitos de OIDC que autorizan las llamadas a la API de los usuarios.
-
Recuperar las credenciales de AWS de un grupo de identidades de Amazon Cognito.
| Característica | Descripción |
|---|---|
| OIDC identity provider | Issue ID tokens to authenticate users |
| Authorization server | Issue access tokens to authorize user access to APIs |
| SAML 2.0 service provider | Transform SAML assertions into ID and access tokens |
| OIDC relying party | Transform OIDC tokens into ID and access tokens |
| Social provider relying party | Transform ID tokens from Apple, Facebook, Amazon, or Google to your own ID and access tokens |
| Authentication frontend service | Sign up, manage, and authenticate users with managed login |
| API support for your own UI | Create, manage and authenticate users through authentication API requests in supported AWS SDKs¹ |
| Multi-factor authentication | Use SMS messages, TOTPs, or your user's device as an additional authentication factor¹ |
| Security monitoring & response | Secure against malicious activity and insecure passwords¹ |
| Customize authentication flows | Build your own authentication mechanism, or add custom steps to existing flows² |
| Groups | Create logical groupings of users, and a hierarchy of IAM role claims when you pass tokens to identity pools |
| Customize tokens | Customize your ID and access tokens with new, modified, and suppressed claims |
| Customize user attributes | Assign values to user attributes and add your own custom attributes |
¹ La característica no está disponible para los usuarios federados.
² Esta característica no está disponible para usuarios federados ni con inicio de sesión administrado.
Para obtener más información sobre los grupos de usuarios, consulte Introducción a los grupos de usuarios y la Referencia de la API de grupos de usuarios de Amazon Cognito.
Grupos de identidades
Un grupo de identidades es un conjunto de identificadores o identidades únicos que se asignan a los usuarios o invitados y se autoriza a recibir credenciales temporales de AWS. Al presentar una prueba de autenticación en un grupo de identidades en forma de afirmaciones fiables de un proveedor de identidades sociales (IdP) de SAML 2.0, OpenID Connect (OIDC) u OAuth 2.0, se asocia al usuario con una identidad del grupo de identidades. El token que el grupo de identidades crea para la identidad puede recuperar las credenciales de sesión temporales de AWS Security Token Service (AWS STS).
Para complementar las identidades autenticadas, también puede configurar un grupo de identidades para autorizar el acceso de AWS sin autenticación de IdP. Puede ofrecer una prueba de autenticación personalizada con Identidades autenticadas por el desarrollador. Puede conceder credenciales de AWS temporales a usuarios invitados con identidades no autenticadas.
Con los grupos de identidades, tiene dos formas de integrarse con las políticas de IAM en su Cuenta de AWS. Puede utilizar estas dos características juntas o de forma individual.
Control de acceso con base en roles
Cuando el usuario pasa las reclamaciones al grupo de identidades, Amazon Cognito elige el rol de IAM que solicita. Para personalizar los permisos del rol según las necesidades, se aplican las políticas de IAM a cada rol. Por ejemplo, si el usuario demuestra que trabaja en el departamento de marketing, recibirá credenciales para un rol con políticas adaptadas a las necesidades de acceso del departamento de marketing. Amazon Cognito puede solicitar un rol predeterminado, un rol basado en reglas que consultan las reclamaciones del usuario o un rol basado en la suscripción al grupo del usuario en un grupo de usuarios. También puede configurar la política de confianza de roles para que IAM confíe solo en el grupo de identidades para generar sesiones temporales.
Atributos para controlar el acceso
El grupo de identidades lee los atributos de las reclamaciones de los usuarios y los asigna a las etiquetas de las entidades principales de la sesión temporal del usuario. A continuación, puede configurar las políticas basadas en recursos de IAM para permitir o denegar el acceso a los recursos en función de las entidades principales de IAM que contienen las etiquetas de sesión del grupo de identidades. Por ejemplo, si el usuario demuestra que está en el departamento de marketing, AWS STS etiqueta la sesión Department: marketing. El bucket de Amazon S3 permite operaciones de lectura en función de una condición aws:PrincipalTag que requiere un valor de marketing para la etiqueta Department.
| Característica | Descripción |
|---|---|
| Amazon Cognito user pool relying party | Exchange an ID token from your user pool for web identity credentials from AWS STS |
| SAML 2.0 service provider | Exchange SAML assertions for web identity credentials from AWS STS |
| OIDC relying party | Exchange OIDC tokens for web identity credentials from AWS STS |
| Social provider relying party | Exchange OAuth tokens from Amazon, Facebook, Google, Apple, and Twitter for web identity credentials from AWS STS |
| Custom relying party | With AWS credentials, exchange claims in any format for web identity credentials from AWS STS |
| Unauthenticated access | Issue limited-access web identity credentials from AWS STS without authentication |
| Role-based access control | Choose an IAM role for your authenticated user based on their claims, and configure your roles to only be assumed in the context of your identity pool |
| Attribute-based access control | Convert claims into principal tags for your AWS STS temporary session, and use IAM policies to filter resource access based on principal tags |
Para obtener más información sobre los grupos de identidades, consulte Introducción a los grupos de identidades de Amazon Cognito y la Referencia de la API de grupos de identidades de Amazon Cognito.
Comparación de grupos de usuarios y grupos de identidades de Amazon Cognito
| Característica | Descripción | Grupos de usuarios | Grupos de identidades |
|---|---|---|---|
| OIDC identity provider | Issue OIDC ID tokens to authenticate app users | ✓ | |
| User directory | Store user profiles for authentication | ✓ | |
| Authorize API access | Issue access tokens to authorize user access to APIs (including user profile self-service API operations), databases, and other resources that accept OAuth scopes | ✓ | |
| IAM web identity authorization | Generate tokens that you can exchange with AWS STS for temporary AWS credentials | ✓ | |
| SAML 2.0 service provider & OIDC identity provider | Issue customized OIDC tokens based on claims from a SAML 2.0 identity provider | ✓ | |
| OIDC relying party & OIDC identity provider | Issue customized OIDC tokens based on claims from an OIDC identity provider | ✓ | |
| OAuth 2.0 relying party & OIDC identity provider | Issue customized OIDC tokens based on scopes from OAuth 2.0 social providers like Apple and Google | ✓ | |
| SAML 2.0 service provider & credentials broker | Issue temporary AWS credentials based on claims from a SAML 2.0 identity provider | ✓ | |
| OIDC relying party & credentials broker | Issue temporary AWS credentials based on claims from an OIDC identity provider | ✓ | |
| Social provider relying party & credentials broker | Issue temporary AWS credentials based on JSON web tokens from developer applications with social providers like Apple and Google | ✓ | |
| Amazon Cognito user pool relying party & credentials broker | Issue temporary AWS credentials based on JSON web tokens from Amazon Cognito user pools | ✓ | |
| Custom relying party & credentials broker | Issue temporary AWS credentials to arbitrary identities, authorized by developer IAM credentials | ✓ | |
| Authentication frontend service | Sign up, manage, and authenticate users with managed login | ✓ | |
| API support for your own authentication UI | Create, manage and authenticate users through API requests in supported AWS SDKs¹ | ✓ | |
| MFA | Use SMS messages, TOTPs, or your user's device as an additional authentication factor¹ | ✓ | |
| Security monitoring & response | Protect against malicious activity and insecure passwords¹ | ✓ | |
| Customize authentication flows | Build your own authentication mechanism, or add custom steps to existing flows¹ | ✓ | |
| User groups | Create logical groupings of users, and a hierarchy of IAM role claims when you pass tokens to identity pools | ✓ | |
| Customize tokens | Customize your ID and access tokens with new, modified, and suppressed claims and scopes | ✓ | |
| AWS WAF web ACLs | Monitor and control requests to your authentication front end with AWS WAF | ✓ | |
| Customize user attributes | Assign values to user attributes and add your own custom attributes | ✓ | |
| Unauthenticated access | Issue limited-access web identity credentials from AWS STS without authentication | ✓ | |
| Role-based access control | Choose an IAM role for your authenticated user based on their claims, and configure your role trust to limit access to web identity users | ✓ | |
| Attribute-based access control | Transform user claims into principal tags for your AWS STS temporary session, and use IAM policies to filter resource access based on principal tags | ✓ |
¹ La característica no está disponible para los usuarios federados.
Introducción a Amazon Cognito
Para ver ejemplos de aplicaciones de grupos de usuarios, consulte Introducción a los grupos de usuarios.
Para ver una introducción a los grupos de identidades, consulte Introducción a los grupos de identidades de Amazon Cognito.
Para obtener enlaces a experiencias de configuración guiada con grupos de usuarios y grupos de identidades, consulte Opciones de configuración guiada para Amazon Cognito.
Para empezar a utilizar un AWS SDK, consulte Herramientas para desarrolladores de AWS
Para usar Amazon Cognito necesita una Cuenta de AWS. Para obtener más información, consulte Introducción a con () AWS.
Disponibilidad en las regiones
Amazon Cognito está disponible en varias regiones de AWS de todo el mundo. En cada región, Amazon Cognito se distribuye en varias zonas de disponibilidad. Estas zonas de disponibilidad están físicamente aisladas entre sí, pero están unidas mediante conexiones de red privadas con un alto nivel de rendimiento y redundancia y con baja latencia. Con estas zonas de disponibilidad, AWS puede ofrecer servicios, incluido Amazon Cognito, con niveles sumamente elevados de disponibilidad y redundancia, así como minimizar la latencia.
Para ver si Amazon Cognito está disponible actualmente en alguna Región de AWS, consulte Servicios de AWS por región
Para obtener más información sobre los puntos de conexión del servicio de API regional, consulte los puntos de conexión y las regiones de AWS en la Referencia general de Amazon Web Services.
Para obtener más información sobre la cantidad de zonas de disponibilidad de cada región, consulte Infraestructura global de AWS
Precios de Amazon Cognito
Para obtener más información sobre los precios de Amazon Cognito, consulte Precios de Amazon Cognito