Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ejemplo de aplicación para grupos de identidades
El caso de uso más común de los grupos de identidades de Amazon Cognito es federar usuarios de varios sistemas de inicio de sesión y entregar credenciales de AWS temporales de acceso limitado directamente al cliente. Esto elimina la necesidad de crear un agente de credenciales para obtener permisos de acceso a sus recursos de AWS. Por ejemplo, puede que tenga que permitir que los usuarios inicien sesión con sus cuentas de redes sociales y accedan a los activos de la aplicación desde Amazon S3 para su aplicación móvil. Los grupos de identidades también proporcionan credenciales a los usuarios que inician sesión con grupos de usuarios.
En este tutorial, creará una aplicación web en la que podrá obtener credenciales temporales autenticadas y de invitado en los flujos de autenticación básica y mejorada, con proveedores de identidad (IdP) compatibles en los grupos de identidades. Si ya tiene experiencia en el desarrollo web, descargue la aplicación de ejemplo desde GitHub.
Descargue la aplicación de ejemplo desde GitHub
En este ejemplo de aplicación, se muestran las siguientes capacidades de los grupos de identidades de Amazon Cognito:
- Flujos de autenticación en grupos de identidades
-
- Implementación del acceso como invitado (no autenticado)
-
- Integración con proveedores de identidad compatibles
-
-
IdP sociales (Facebook, Amazon, Twitter, Apple y Google) para el acceso de los consumidores
-
IdP empresariales (a través de OpenID Connect o SAML) para usuarios corporativos
-
Amazon Cognito user pools
- Administración de credenciales de AWS
-
Tras configurar la aplicación en el servidor web de desarrollo y acceder a ella desde un navegador, aparecen las siguientes opciones.
Requisitos previos
Antes de comenzar, necesitará configurar los siguientes recursos:
-
Una cuenta de AWS con acceso a Amazon Cognito. Si aún no dispone de una cuenta de AWS, siga las instrucciones en Cómo empezar con AWS.
-
Python 3.8 o posterior instalado en su equipo de desarrollo.
-
Acceso a GitHub.
-
Credenciales de AWS configuradas con permisos para realizar solicitudes autenticadas a las API de Amazon Cognito. Estas credenciales son necesarias para la autenticación de los desarrolladores.
Para obtener más información sobre la implementación de las credenciales de AWS y de la federación de grupos de identidades en su SDK específico, consulte Obtención de credenciales.
Configuración del proveedor de autenticación
Para obtener los mejores resultados con esta aplicación, configure e integre uno o más proveedores de identidades (IdP) de terceros o grupos de usuarios de Amazon Cognito con su grupo de identidades de Amazon Cognito. Tras completar los requisitos previos y antes de ejecutar esta aplicación de demostración, elija los proveedores de identidad que desee configurar. La consola de Amazon Cognito le guía por el proceso de configuración de proveedores y grupos de identidades.
- Amazon Cognito user pools
-
- Proveedores de identidades de redes sociales
-
- Proveedores de OpenID Connect (OIDC)
-
- Proveedores SAML
-
Para esta aplicación de demostración, no tiene que configurar todos los proveedores de identidades compatibles. Puede empezar con uno que coincida con su caso de uso. Cada enlace proporciona instrucciones de configuración detalladas.
Implementación de la aplicación de demostración
Clone el repositorio
-
Abra una ventana de terminal.
-
Clone el repositorio aws-doc-sdk-examples o recupera de otro modo esta carpeta en el repositorio.
git clone https://github.com/awsdocs/aws-doc-sdk-examples.git
-
Desplácese hasta el directorio del proyecto .
cd python/example_code/cognito/scenarios/identity_pools_example_demo/web
Crear un grupo de identidades
A fin de crear un grupo de identidades de Amazon Cognito para su aplicación, siga las instrucciones en Información general de la consola de grupos de identidades.
Cómo configurar un grupo de identidades para la aplicación de demostración
-
Abra la consola de Amazon Cognito.
-
En el panel de navegación de la izquierda, elija Grupos de identidades. Seleccione un grupo de identidades existente o cree uno nuevo.
-
En Acceso de usuario, habilite el Acceso autenticado y el Acceso de invitado. Configure un rol de IAM nuevo o existente y asígnele los permisos que desee conceder a cada tipo de usuario.
-
En Acceso de usuario, configure los proveedores de identidad que desee configurar.
-
En Propiedades del grupo de identidades, habilite la Autenticación básica (clásica).
-
Mantenga el navegador abierto con la consola de su grupo de identidades. Utilizará el ID del grupo de identidades y otros datos de ajuste en la configuración de la aplicación.
Los pasos siguientes le guiarán a través de la configuración inicial de su aplicación de demostración.
Cómo configurar la aplicación de demostración
-
Abra una línea de comandos en python/example_code/cognito/scenarios/identity_pools_example_demo/web en su clon de aws-doc-sdk-examples.
-
Cree un archivo .env copiando el archivo de entorno de ejemplo.
cp .env.example .env
-
Abra el archivo .env en un editor de texto. Sustituya el resto de los valores de ejemplo por sus propios valores.
-
Instale dependencias de backend.
pip install -r requirements.txt
-
Inicie el servidor backend:
cd backend
python oauth_server.py
-
Abra una nueva ventana de terminal, navegue hasta el directorio del proyecto e inicie el servidor del frontend:
cd frontend
python -m http.server 8001
-
Abra la aplicación en su navegador, en http://localhost:8001. Su navegador mostrará la interfaz de la aplicación de demostración, lista para probar la autenticación de los grupos de identidades.
Explore los métodos de autenticación de su grupo de identidades
Esta sección le guía a través de los flujos de autenticación básicos y mejorados mediante la aplicación de demostración de grupos de identidades de Amazon Cognito. Con esta demostración, aprenderá cómo funcionan los grupos de identidades con varios proveedores de identidades para proporcionar credenciales de AWS temporales a los usuarios de su aplicación.
En la sección Demostración interactiva de la aplicación de ejemplo, primero elegirá entre dos tipos de acceso compatibles con los grupos de identidades.
- Acceso no autenticado (invitado)
-
Proporcione credenciales de AWS a los usuarios que aún no se hayan autenticado.
- Acceso autenticado
-
Cambie los tokens de los proveedores de identidad por credenciales de AWS con todos los permisos disponibles. Elija un proveedor de identidad de entre los que configuró en su archivo .env.
En este paso, se muestra cómo obtener credenciales de AWS temporales para los usuarios no autenticados (invitados) mediante la característica de acceso como invitado de su grupo de identidades. En la aplicación de demostración, probará los flujos básicos y mejorados para ver cómo los grupos de identidades emiten credenciales sin necesidad de que el usuario inicie sesión. El acceso como invitado utiliza la misma secuencia de API que el acceso autenticado, pero sin proporcionar los identificadores de los proveedores de identidad (como los tokens OAuth de Google, Facebook o las aserciones de SAML de los proveedores empresariales).
Siga leyendo si busca información sobre cómo proporcionar acceso limitado en AWS a los usuarios sin requerir autenticación. Tras implementar el acceso como invitado, aprenderá a proporcionar credenciales de AWS de forma segura a los usuarios anónimos y a entender las diferencias entre los dos flujos de autenticación.
El acceso no autenticado puede emitir credenciales a cualquier persona con acceso a Internet, por lo que es mejor utilizarlo para recursos de AWS que requieran una seguridad mínima, como las API públicas y los recursos gráficos. Antes de continuar con este paso, compruebe si ha configurado su grupo de identidades con el acceso como invitado habilitado y asegúrese de que existen las políticas de IAM adecuadas para limitar los permisos.
- Guest access with enhanced flow
-
El flujo mejorado es un enfoque simplificado para obtener credenciales de AWS para los usuarios no autenticados con dos solicitudes de API.
Cómo probar el acceso de invitados con el flujo mejorado
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Seleccione la pestaña Acceso de invitado.
-
Seleccione la pestaña Flujo mejorado.
-
Seleccione Probar acceso de invitado.
-
La aplicación obtiene credenciales de AWS temporales de sus grupos de identidades sin necesidad de solicitar más autenticación.
-
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-07T00:58:21-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
Solicitud de API GetId() con su identityPoolId. No se requieren tokens de autenticación para el acceso de invitados
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
Si es válido, busca o crea y devuelve el IdentityID del usuario. Un ejemplo de respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
-
GetCredentialsForIdentity() con el identityPoolId devuelto.
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
Cognito valida el acceso de invitado, asume internamente el rol no autenticado con AWS STS y devuelve una credencial de AWS temporal. (No hay autenticación de IAM en esta llamada; la confianza en el rol debe permitir cognito-identity-amazonzaws.com).
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-07T00:58:21-07:00"
}
}
- Guest access with basic flow
-
El flujo básico proporciona un control pormenorizado del proceso de autenticación, con solicitudes de API independientes para la recuperación de la identidad y la generación de credenciales.
Cómo probar el acceso de invitados con el flujo básico
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Seleccione la pestaña Acceso de invitado.
-
Seleccione la pestaña Flujo básico.
-
Seleccione Probar acceso de invitado.
-
La aplicación obtiene credenciales de AWS temporales de sus grupos de identidades sin necesidad de solicitar más autenticación.
-
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
Solicitud de API GetId() con su ID de grupo de identidades. No se requieren tokens de autenticación para el acceso de invitados.
POST GetId
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
Si es válido, busca o crea y devuelve el IdentityID del usuario. Un ejemplo de respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetOpenIdToken() con el IdentityID devuelto y el mismo mapa Logins
POST GetOpenIdToken
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Token": "eyJraWQiOiJFWAMPLE......"
}
Qué ocurre en este paso: Amazon Cognito emite un token de identidad web OpenID Connect de corta duración desde cognito-identity.amazonaws.com que representa a este IdentityId. El token incluye las reclamaciones de OIDC que AWS STS evalúa, como aud (el ID de su grupo de identidades) y amr (autenticado o no autenticado). La política de confianza de su rol de IAM debe exigir esas reclamaciones.
-
AssumeRoleWithWebIdentity(): su aplicación llama a AWS STS directamente para cambiar el token OpenID de Amazon Cognito por credenciales temporales de AWS
POST sts:AssumeRoleWithWebIdentity
{
"RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolUnauth_Role",
"WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
}
Respuesta:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "FwoGZXIvYXdzEEXAMPLE......"
}
}
Qué ocurre en este paso: una vez validadas, devuelve las credenciales temporales de AWS
Uso de credenciales temporales
Estas credenciales temporales funcionan como credenciales de AWS estándar, pero con permisos limitados definidos por el rol de IAM no autenticado del grupo de identidades. Puede utilizarlas con cualquier AWS SDK o AWS CLI Para obtener más información sobre cómo configurar AWS SDK con credenciales, consulte Proveedores de credenciales estandarizadas en la Guía de referencia de las herramientas y los AWS SDK.
Los ejemplos que aparecen a continuación no son una lista completa, pero muestran las formas habituales en las que la característica de invitado de un grupo de identidades puede mejorar la experiencia del usuario.
Los siguientes ejemplos configuran los proveedores de credenciales para el acceso limitado a Amazon S3 como usuario invitado.
- Python
-
# Example: Using credentials with boto3
import boto3
# Configure client with temporary credentials
s3_client = boto3.client(
's3',
aws_access_key_id='AKIAIOSFODNN7EXAMPLE',
aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
aws_session_token='IQoJb3JpZ2luX2VjEEXAMPLE......'
)
# Make API requests within IAM role permissions
response = s3_client.list_objects_v2(Bucket='my-public-bucket')
# Access public content
for obj in response.get('Contents', []):
print(f"File: {obj['Key']}, Size: {obj['Size']} bytes")
- JavaScript
-
// Example: Accessing public content
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
const s3Client = new S3Client({
region: "us-east-1",
credentials: {
accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
sessionToken: 'IQoJb3JpZ2luX2VjEEXAMPLE......'
}
});
// Access public images or documents
const response = await s3Client.send(new GetObjectCommand({
Bucket: 'my-public-content',
Key: 'product-catalog.pdf'
}));
Los ejemplos siguientes utilizan el acceso de solo lectura a Amazon DynamoDB como usuario invitado.
- Python
-
# Example: Limited app functionality for trial users
import boto3
dynamodb = boto3.client(
'dynamodb',
aws_access_key_id='AKIAIOSFODNN7EXAMPLE',
aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
aws_session_token='IQoJb3JpZ2luX2VjEEXAMPLE......'
)
# Allow guest users to view sample data (limited to 5 items)
response = dynamodb.scan(TableName='SampleProducts', Limit=5)
- JavaScript
-
// Example: Limited app functionality for trial users
import { DynamoDBClient, ScanCommand } from "@aws-sdk/client-dynamodb";
const dynamodbClient = new DynamoDBClient({
region: "us-east-1",
credentials: {
accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
sessionToken: 'IQoJb3JpZ2luX2VjEEXAMPLE......'
}
});
// Allow guest users to view sample data (limited to 5 items)
const response = await dynamodbClient.send(new ScanCommand({
TableName: 'SampleProducts',
Limit: 5
}));
En este paso, se analiza el flujo general de uso de proveedores de identidades sociales con los grupos de identidades de Amazon Cognito. La autenticación social proporciona una experiencia de inicio de sesión familiar y, al mismo tiempo, mantiene la seguridad mediante la administración de identidades federadas. Puede iniciar sesión desde un proveedor de identidades (IdP) social como Google, Facebook y Amazon y, luego, cambiar ese token de IdP por credenciales de AWS temporales. Los grupos de identidades también admiten la integración de Twitter y Apple, pero no en la aplicación de ejemplo.
El grupo de identidades en sí no es un directorio de usuarios. No almacena contraseñas ni campos de perfil. En cambio, confía en los IdP externos para autenticar al usuario y se centra en autorizar a ese usuario ya autenticado para llamar directamente a los servicios de AWS, mediante la venta de credenciales para los roles de IAM.
- Social identity provider with enhanced flow
-
En esta sección, se muestra cómo puede utilizar un proveedor de identidad social para iniciar sesión en un usuario y, mediante el flujo mejorado, cambiar el token del proveedor en un grupo de identidades de Amazon Cognito por credenciales temporales para solicitar recursos de AWS.
Uso del inicio de sesión por redes sociales con el flujo mejorado en la aplicación de ejemplo
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Elija la pestaña Acceso autenticado.
-
Seleccione la pestaña Flujo mejorado.
-
Elija un proveedor social compatible que haya configurado, como Iniciar sesión con Google, Iniciar sesión con Facebook o Iniciar sesión con Amazon.
-
Inicie sesión y acepte compartir los datos del usuario con la aplicación.
-
El proveedor redirige de nuevo al URI de redireccionamiento de la aplicación
-
La aplicación envía el token del proveedor a su grupo de identidades y recupera las credenciales temporales de AWS
-
La aplicación muestra el panel de resultados en la interfaz web.
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
La aplicación inicia sesión en el usuario con un IdP social y obtiene el token del proveedor. Los grupos de identidades aceptan los siguientes artefactos de los proveedores:
| Proveedor de identidades |
Clave de proveedor de Cognito |
Finalidad |
| Google |
accounts.google.com |
Tokens de OAuth 2.0 de Google Sign-In |
| Facebook |
graph.facebook.com |
Tokens de acceso de Facebook Login |
| Amazon |
www.amazon.com |
Tokens OAuth desde Login with Amazon |
Tras la autenticación correcta con el proveedor social, su aplicación recibe una respuesta de OAuth que contiene el token de acceso y otros detalles de autenticación:
{
"access_token": "ya29.A0AS3H6NEXAMPLE......",
"expires_in": 3599,
"scope": "openid https://www.examplesocial....",
"token_type": "Bearer",
"id_token": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
}
-
La solicitud de API GetId() con el ID de su grupo de identidades y un mapa Logins que contiene el token de su proveedor social
POST GetId
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"accounts.google.com": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetCredentialsForIdentity() con el IdentityID devuelto y el mismo mapa Logins
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"accounts.google.com": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
}
}
Respuesta:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-07T00:58:21-07:00"
},
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
Qué ocurrió: Amazon Cognito validó el token con el proveedor configurado, eligió un rol de IAM en función de la configuración del proveedor y llamó a AWS STS en su nombre. A continuación, su grupo de identidades devolvió credenciales temporales.
- Social identity provider with basic flow
-
En esta sección, se muestra cómo puede utilizar un proveedor de identidad social para iniciar sesión en un usuario y, mediante el flujo básico, cambiar el token del proveedor en un grupo de identidades de Amazon Cognito por credenciales temporales para llamar a los servicios de AWS.
Uso del inicio de sesión por redes sociales con el flujo básico en la aplicación de ejemplo
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Elija la pestaña Acceso autenticado.
-
Seleccione la pestaña Flujo básico.
-
Elija un proveedor social compatible que haya configurado, como Iniciar sesión con Google, Iniciar sesión con Facebook o Iniciar sesión con Amazon.
-
Inicie sesión y acepte compartir los datos del usuario con la aplicación.
-
El proveedor redirige de nuevo al URI de redireccionamiento de la aplicación
-
La aplicación envía el token del proveedor a su grupo de identidades y recupera las credenciales temporales de AWS
-
La aplicación muestra el panel de resultados en la interfaz web.
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
La aplicación inicia sesión en el usuario con un IdP social y obtiene el token del proveedor. Los grupos de identidades aceptan los siguientes artefactos de los proveedores:
| Proveedor de identidades |
Clave de proveedor de Cognito |
Finalidad |
| Google |
accounts.google.com |
Tokens de OAuth 2.0 de Google Sign-In |
| Facebook |
graph.facebook.com |
Tokens de acceso de Facebook Login |
| Amazon |
www.amazon.com |
Tokens OAuth desde Login with Amazon |
Tras la autenticación correcta con el proveedor social, su aplicación recibe una respuesta de OAuth que contiene el token de acceso y otros detalles de autenticación:
{
"access_token": "ya29.A0AS3H6NEXAMPLE......",
"expires_in": 3599,
"scope": "openid https://www.examplesocial....",
"token_type": "Bearer",
"id_token": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
}
-
La solicitud de API GetId() con el ID de su grupo de identidades y un mapa Logins que contiene el token de su proveedor social
POST GetId
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"accounts.google.com": "token..."
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetOpenIdToken() con el IdentityID devuelto y el mismo mapa Logins
POST GetOpenIdToken
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"accounts.google.com": "token..."
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Token": "eyJraWQiOiJFWAMPLE......"
}
-
AssumeRoleWithWebIdentity() con el token OpenID
POST AssumeRoleWithWebIdentity
{
"RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
"WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
}
Respuesta:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T14:36:17-07:00"
}
}
Qué ocurrió: Amazon Cognito validó el token con el proveedor configurado y emitió un token OpenID. La aplicación llamó a AWS STS directamente para asumir un rol de IAM y recibir credenciales temporales.
Funcionamiento del acceso social
-
Los usuarios de redes sociales reciben credenciales de AWS temporales a través de los grupos de identidades de Amazon Cognito después de autenticarse con su proveedor de redes sociales.
-
Cada usuario autenticado recibe un ID de identidad único que permanece en todas las sesiones.
-
Estas credenciales están vinculadas a un rol de IAM diseñado específicamente para el acceso autenticado, lo que proporciona permisos más amplios que el acceso como invitado.
-
Los tokens de los proveedores sociales se intercambian por credenciales de AWS, manteniendo la identidad y los permisos de los usuarios.
En este paso, se analiza la autenticación de Amazon Cognito con la integración del inicio de sesión administrado con grupos de usuarios. Al vincular un grupo de usuarios como un IdP a un grupo de identidades, los tokens del grupo de usuarios autorizan a su grupo de identidades a emitir credenciales temporales.
- User pool authentication with enhanced flow
-
El flujo mejorado proporciona un enfoque simplificado para obtener credenciales de AWS a través de grupos de identidades de Amazon Cognito con una sola solicitud de API.
Utilice la autenticación del grupo de usuarios de Amazon Cognito con el flujo mejorado del grupo de identidades
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Elija la pestaña Acceso autenticado.
-
Seleccione la pestaña Flujo mejorado.
-
Elija Iniciar sesión con los grupos de usuarios de Amazon Cognito
-
Complete el inicio de sesión con su nombre de usuario y contraseña en el inicio de sesión administrado.
-
El grupo de usuarios redirige de nuevo al URI de redirección de su aplicación con un código de autorización.
-
La aplicación intercambia el código de autorización con su grupo de usuarios por tokens web JSON.
-
La aplicación intercambia el token de ID con su grupo de identidades por credenciales de AWS temporales
-
La aplicación muestra el panel de resultados en la interfaz web
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
La aplicación inicia sesión en el usuario con un Amazon Cognito. Tras la autenticación correcta con el grupo de usuarios, la aplicación recibe una respuesta de OAuth 2.0 que contiene el token de identificación (JWT). Los grupos de identidades aceptan los tokens de ID de JWT de los grupos de usuarios que utilizan este formato de clave de proveedor:
| Proveedor de identidades |
Clave de proveedor de Cognito |
Finalidad |
| Grupo de usuarios de Amazon Cognito |
cognito-idp.{region}.amazonaws.com/{user-pool-id} |
Tokens de ID de JWT de grupos de usuarios de Amazon Cognito |
Tras la autenticación correcta con el grupo de usuarios, la aplicación recibe una respuesta de OAuth 2.0 que contiene el token de identificación (JWT):
{
"id_token": "eyJraWQiOiJFWAMPLE......",
"token_type": "Bearer",
"expires_in": 3600
}
-
Solicitud de API GetId() con su identityPoolId y un mapa Logins que incluye la clave del proveedor del grupo de usuarios asignada al id_token. Amazon Cognito verificó que la firma, el emisor, el vencimiento y la audiencia (aud) del token de ID del grupo de usuarios coincidan con uno de los ID de cliente de aplicación que usted ha registrado para este IdP del grupo de usuarios en el grupo de identidades.
POST GetId
{
"AccountId": "111122223333",
"IdentityPoolId": "us-east-1:1ac4a76d-1fef-48aa-83af-4224799c0b5c",
"Logins": {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
}
}
Si es válido, busca o crea y devuelve el IdentityID del usuario. Un ejemplo de respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetCredentialsForIdentity() con el identityPoolId devuelto y a=el mismo mapa Logins con el id_token. Amazon Cognito revalida que la firma, el emisor, el vencimiento y la audiencia (aud) del token de ID del grupo de usuarios coincidan con uno de los ID de cliente de aplicación que usted ha registrado para este IdP del grupo de usuarios en el grupo de identidades.
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
}
}
Si es válido, elige un rol de IAM (rol dentro del token, por reglas o predeterminado), llama a AWS STS en su nombre y devuelve credenciales de AWS temporales. Un ejemplo de respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "ASIAW7TIP7EJEXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T14:36:17-07:00"
}
}
- User pool authentication with basic flow
-
El flujo básico proporciona un control pormenorizado del proceso de autenticación, con solicitudes de API independientes para la recuperación de la identidad y la generación de credenciales.
Utilice la autenticación del grupo de usuarios de Amazon Cognito con el flujo básico del grupo de identidades
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Elija la pestaña Acceso autenticado.
-
Seleccione la pestaña Flujo básico.
-
Elija Iniciar sesión con los grupos de usuarios de Amazon Cognito
-
Complete el inicio de sesión con su nombre de usuario y contraseña en el inicio de sesión administrado.
-
El grupo de usuarios redirige de nuevo al URI de redirección de su aplicación con un código de autorización.
-
La aplicación intercambia el código de autorización con su grupo de usuarios por tokens web JSON.
-
La aplicación intercambia el token de ID con su grupo de identidades por credenciales de AWS temporales
-
La aplicación muestra el panel de resultados en la interfaz web
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
La aplicación inicia sesión en el usuario con un grupo de usuarios de Amazon Cognito y obtiene el token de identificación (JWT) como artefacto. Tras la autenticación correcta con el grupo de usuarios, la aplicación recibe una respuesta de OAuth que contiene el token de identificación (JWT). Los grupos de identidades utilizan este token para la autenticación:
{
"id_token": "eyJraWQiOiJFWAMPLE......",
"token_type": "Bearer",
"expires_in": 3600
}
-
Solicitud de API GetId() con su ID de grupo de identidades y un mapa Logins que incluye su clave de proveedor de grupo de usuarios y el token de ID como valor. Amazon Cognito verificó que la firma, el vencimiento y la audiencia (aud) del token de ID del grupo de usuarios coincidan con uno de los ID de cliente de aplicación que usted ha registrado para este IdP del grupo de usuarios en el grupo de identidades.
POST GetId
{
"AccountId": "111122223333",
"IdentityPoolId": "us-east-1:1ac4a76d-1fef-48aa-83af-4224799c0b5c",
"Logins": {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
}
}
Si es válido, busca o crea y devuelve el IdentityID del usuario. Un ejemplo de respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetOpenIdToken() con el IdentityID devuelto y el mismo mapa Logins
POST GetOpenIdToken
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Token": "eyJraWQiOiJFWAMPLE......"
}
Qué ocurre en este paso: Amazon Cognito emite un token de identidad web OpenID Connect de corta duración desde cognito-identity.amazonaws.com que representa a este IdentityId. El token incluye las reclamaciones de OIDC que AWS STS evalúa, como aud (el ID de su grupo de identidades) y amr (autenticado o no autenticado). La política de confianza de su rol de IAM debe exigir esas reclamaciones.
-
AssumeRoleWithWebIdentity(): su aplicación llama a AWS STS directamente para cambiar el token OpenID de Amazon Cognito por credenciales temporales de AWS
POST sts:AssumeRoleWithWebIdentity
{
"RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
"WebIdentityToken": "eyJraWQiOiJFWAMPLE......",
"RoleSessionName": "CognitoIdentityCredentials"
}
Respuesta:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "FwoGZXIvYXdzEEXAMPLE......",
"Expiration": "2025-08-12T14:36:17-07:00"
},
"AssumedRoleUser": {
"AssumedRoleId": "AROAW7TIP7EJYEXAMPLE:CognitoIdentityCredentials",
"Arn": "arn:aws:sts::111122223333:assumed-role/Cognito_IdentityPoolAuth_Role/CognitoIdentityCredentials"
}
}
Qué hizo su aplicación de demostración: su aplicación envió el token OpenID desde GetOpenIdToken() hasta AWS STS, solicitando credenciales temporales. AWS STS realizó comprobaciones de validación y emitió credenciales:
-
Los usuarios del grupo de usuarios reciben credenciales de AWS temporales a través de los grupos de identidades de Amazon Cognito.
-
Estas credenciales están vinculadas a un rol de IAM especificado en la configuración del grupo de identidades.
-
Los tokens de ID del grupo de usuarios se intercambian por credenciales de AWS a través del grupo de identidades.
En este paso, se analiza la autenticación SAML. Los usuarios pueden iniciar sesión con proveedores de identidad empresariales que admitan SAML para acceder a los servicios de AWS. La aplicación de ejemplo no admite el flujo básico con SAML.
- SAML authentication with enhanced flow
-
En esta sección, se muestra cómo puede utilizar un proveedor de identidad SAML para iniciar sesión en un usuario y, mediante el flujo mejorado, cambiar la aserción SAML en un grupo de identidades de Amazon Cognito por credenciales de AWS temporales para llamar a los servicios de AWS.
Uso de la autenticación SAML con el flujo mejorado del grupo de identidades
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Elija la pestaña Acceso autenticado.
-
Seleccione la pestaña Flujo mejorado.
-
Seleccione Iniciar sesión con el proveedor SAML
-
Complete el inicio de sesión con sus credenciales empresariales.
-
El grupo de usuarios redirige de nuevo al URI de redirección de su aplicación con una aserción SAML.
-
La aplicación intercambia el código de autorización con su grupo de usuarios por tokens web JSON.
-
La aplicación intercambia la respuesta SAML con su grupo de identidades por credenciales de AWS temporales
-
La aplicación muestra el panel de resultados en la interfaz web
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
La aplicación inicia sesión en el usuario con un IdP SAML y obtiene la respuesta SAML. Los grupos de identidades aceptan las aserciones SAML de los proveedores empresariales que utilizan el ARN del proveedor SAML como clave:
| Proveedor de identidades |
Clave de proveedor de Cognito |
Finalidad |
| Proveedor SAML |
arn:aws:iam::111122223333:saml-provider/EXAMPLE |
Aserciones de SAML de IdP empresariales |
Tras la autenticación correcta con el proveedor de SAML, su aplicación recibe una respuesta de SAML mediante HTTP POST en la URL de devolución de llamada:
{
"saml_response": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE...",
"provider_arn": "arn:aws:iam::111122223333:saml-provider/EXAMPLE",
"status": "Authentication successful"
}
-
La solicitud de API GetId() con el ID de su grupo de identidades y un mapa Logins que contiene la aserción y el ARN del proveedor SAML
POST GetId
{
"AccountId": "111122223333",
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"arn:aws:iam::111122223333:saml-provider/EXAMPLE": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE..."
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetCredentialsForIdentity() con el IdentityID devuelto y el mismo mapa Logins
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"arn:aws:iam::111122223333:saml-provider/EXAMPLE": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE..."
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......"
}
}
Qué ocurrió: Amazon Cognito validó la aserción SAML con el proveedor configurado, eligió un rol de IAM en función de las reglas o atributos SAML y llamó a AWS STS en su nombre.
Funcionamiento del acceso SAML
-
Los usuarios empresariales reciben credenciales de AWS temporales a través de los grupos de identidades de Amazon Cognito después de autenticarse con su proveedor SAML.
-
Cada usuario autenticado recibe un ID de identidad único que permanece en todas las sesiones.
-
Estas credenciales están vinculadas a un rol de IAM diseñado específicamente para el acceso autenticado, lo que proporciona permisos más amplios que el acceso como invitado.
-
Las aserciones SAML se intercambian por credenciales de AWS, lo que mantiene la identidad del usuario y los atributos empresariales.
En este paso, se analiza la autenticación OIDC con proveedores de identidad empresariales. Los usuarios pueden iniciar sesión a través del proveedor de identidad empresarial de su organización (como Azure AD, Okta o Google Workspace) para acceder a los servicios de AWS. Si busca información sobre cómo integrar la autenticación basada en estándares con sus recursos de AWS, siga leyendo. Después de implementar la autenticación OIDC, aprenderá a aprovechar las aserciones OIDC para lograr un control de acceso detallado.
- OIDC authentication with enhanced flow
-
En esta sección, se muestra cómo puede utilizar un proveedor de identidad OIDC para iniciar sesión en un usuario y, mediante el flujo mejorado, cambiar el token OIDC en un grupo de identidades de Amazon Cognito por credenciales de AWS temporales para llamar a los servicios de AWS.
Uso del inicio de sesión de OIDC con el flujo mejorado del grupo de identidades
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Elija la pestaña Acceso autenticado.
-
Seleccione la pestaña Flujo mejorado.
-
Elija Iniciar sesión con el proveedor OIDC
-
Complete el inicio de sesión con sus credenciales empresariales.
-
El proveedor OIDC redirige de nuevo a la aplicación con un código de autorización
-
La aplicación intercambia el código de autorización con su grupo de usuarios por tokens web JSON.
-
La aplicación envía el token OIDC a su grupo de identidades y recupera las credenciales temporales de AWS.
-
La aplicación muestra el panel de resultados en la interfaz web
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
La aplicación inicia sesión en el usuario con un IdP de OIDC y obtiene el token de ID. Los grupos de identidades aceptan tokens OIDC de proveedores empresariales:
| Proveedor de identidades |
Clave de proveedor de Cognito |
Finalidad |
| Proveedor OIDC |
example-provider.com/oauth2/default |
Tokens de ID OIDC de IdP empresariales |
Tras la autenticación correcta con el proveedor OIDC, la aplicación recibe una respuesta de OAuth 2.0 que contiene los tokens:
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJraWQiOiJFWAMPLE......",
"scope": "email openid profile",
"id_token": "eyJraWQiOiJFWAMPLE......"
}
-
La solicitud de API GetId() con el ID de su grupo de identidades y un mapa Logins que contiene el token de su proveedor OIDC
POST GetId
{
"AccountId": "111122223333",
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetCredentialsForIdentity() con el IdentityID devuelto y el mismo mapa Logins
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......"
}
}
Qué ocurrió: Amazon Cognito validó el token OIDC con el proveedor configurado, eligió un rol de IAM (predeterminado, basado en reclamaciones o asignado por reglas) y llamó a AWS STS en su nombre.
- OIDC authentication with basic flow
-
En esta sección, se muestra cómo puede utilizar un proveedor de identidad OIDC para iniciar sesión en un usuario y, mediante el flujo básico, cambiar el token OIDC en un grupo de identidades de Amazon Cognito por credenciales de AWS temporales para llamar a los servicios de AWS.
Uso del inicio de sesión de OIDC con el flujo básico del grupo de identidades
-
En la aplicación de demostración, vaya a la sección Demostración interactiva
-
Elija la pestaña Acceso autenticado.
-
Seleccione la pestaña Flujo básico.
-
Elija Iniciar sesión con el proveedor OIDC
-
Complete el inicio de sesión con sus credenciales empresariales.
-
El proveedor OIDC redirige de nuevo a la aplicación con un código de autorización
-
La aplicación intercambia el código de autorización con su grupo de usuarios por tokens web JSON.
-
La aplicación envía el token OIDC a su grupo de identidades y recupera las credenciales temporales de AWS.
-
La aplicación muestra el panel de resultados en la interfaz web
Cuando la autenticación se haya realizado correctamente, verá en la interfaz web el panel de resultados y tendrá dos opciones para explorarlos:
-
El botón Ver solo las credenciales: seleccione este botón si desea ver directamente las credenciales de AWS temporales generadas, sin los detalles del flujo de la API.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
El botón Ver flujo de API detallado: seleccione este botón si quiere ver las solicitudes de API detalladas.
-
La aplicación inicia sesión en el usuario con un IdP de OIDC y obtiene el token de ID. Los grupos de identidades aceptan tokens OIDC de proveedores empresariales:
| Proveedor de identidades |
Clave de proveedor de Cognito |
Finalidad |
| Proveedor OIDC |
example-provider.com/oauth2/default |
Tokens de ID OIDC de IdP empresariales |
Tras la autenticación correcta con el proveedor OIDC, la aplicación recibe una respuesta de OAuth 2.0 que contiene los tokens:
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJraWQiOiJFWAMPLE......",
"scope": "openid email profile",
"id_token": "eyJraWQiOiJFWAMPLE......"
}
-
La solicitud de API GetId() con el ID de su grupo de identidades y un mapa Logins que contiene el token de su proveedor OIDC
POST GetId
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetOpenIdToken() con el IdentityID devuelto y el mismo mapa Logins
POST GetOpenIdToken
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
}
}
Respuesta:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Token": "eyJraWQiOiJFWAMPLE......"
}
-
AssumeRoleWithWebIdentity() con el token OpenID
POST AssumeRoleWithWebIdentity
{
"RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
"WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
}
Respuesta:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "FwoGZXIvYXdzEEXAMPLE......",
"Expiration": "2025-08-12T14:36:17-07:00"
}
}
Qué ocurrió: Amazon Cognito validó el token OIDC con el proveedor configurado y devolvió un token OpenID. La aplicación llamó a AWS STS directamente para asumir el rol de IAM adecuado y recibió credenciales de corta duración.
Funcionamiento de la autenticación OIDC
-
Basado en estándares: el OIDC se basa en OAuth 2.0 y proporciona información de identidad estandarizada.
-
Validación de tokens: se puede validar la autenticidad de los tokens de ID.
-
Acceso basado en reclamaciones: las reclamaciones de OIDC se pueden usar para asignar roles y controlar el acceso.
-
Integración empresarial: funciona con los proveedores de identidad empresarial más populares.
Pasos a seguir a continuación
Ahora que ha configurado y explorado la aplicación de demostración, puede hacer lo siguiente:
-
Configurar proveedores de identidad adicionales que aún no haya probado
-
Experimentar con la autenticación básica y la mejorada para comprender sus diferencias
-
Personalizar la demostración para su propio caso de uso
-
Integrar los grupos de identidades de Amazon Cognito en sus propias aplicaciones.