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 temporales de acceso limitado directamente AWS al cliente. Esto elimina la necesidad de crear un agente de credenciales para obtener permisos de acceso a sus recursos. 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 compatibles (IdPs) en los grupos de identidades. Si ya tiene experiencia en el desarrollo web, descargue la aplicación de ejemplo desde GitHub.
Descarga 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
-
-
Redes sociales IdPs (Facebook, Amazon, Twitter, Apple y Google) para el acceso de los consumidores
-
Enterprise IdPs (a través de OpenID Connect o SAML) para usuarios corporativos
-
Grupos de usuarios de Amazon Cognito
- AWS administración de credenciales
-
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 AWS cuenta con acceso a Amazon Cognito. Si no tiene una AWS cuenta, siga las instrucciones que se indican enCómo empezar con AWS.
-
Python 3.8 o posterior instalado en su equipo de desarrollo.
-
GitHub acceso.
-
AWS credenciales configuradas con permisos para realizar solicitudes autenticadas a Amazon APIs Cognito. Estas credenciales son necesarias para la autenticación de los desarrolladores.
Para obtener más información sobre la implementación de la federación de AWS credenciales y 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 de terceros (IdPs) 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.
- Grupos de usuarios de Amazon Cognito
-
- 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
Creación de 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 identidad para proporcionar AWS credenciales 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 AWS credenciales a los usuarios que aún no se hayan autenticado.
- Acceso autenticado
-
Cambie los tokens de los proveedores de identidad por AWS credenciales con una gama completa de permisos disponibles. Elija un proveedor de identidad de entre los que configuró en su archivo .env.
En este paso, se muestra cómo obtener AWS credenciales temporales para usuarios no autenticados (invitados) mediante la función 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 de OAuth Google, Facebook o las confirmaciones 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ás a proporcionar AWS credenciales 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 AWS los recursos que requieren una seguridad mínima, como los activos públicos APIs y 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 AWS credenciales temporales de tus 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:
-
Botón Ver solo credenciales: seleccione este botón si desea ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
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 de no autenticado 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 AWS credenciales 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:
-
Botón Ver solo credenciales: seleccione este botón si desea ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
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 afirmaciones de la OIDC que AWS STS evalúan, como aud (el ID de tu grupo de identidades) y amr (autenticado o no autenticado). La política de confianza de su rol de IAM debe exigir esas reclamaciones.
-
AssumeRoleWithWebIdentity()- Tu aplicación llama AWS STS directamente para cambiar el token OpenID de Amazon Cognito por credenciales temporales 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 AWS credenciales estándar, pero con permisos limitados definidos por la función de IAM no autenticada del grupo de identidades. Puede utilizarlas con cualquier AWS SDK o. AWS CLI Para obtener más información sobre la configuración AWS SDKs con credenciales, consulte los proveedores de credenciales estandarizados en la Guía de referencia de herramientas AWS SDKs y herramientas.
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. Puedes iniciar sesión desde un proveedor de identidad social (IdP) como Google, Facebook y Amazon, y luego cambiar ese token de IdP por credenciales temporales. AWS 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 lugar de ello, confía en una entidad externa IdPs para autenticar al usuario y se centra en autorizar a ese usuario ya autenticado a llamar directamente a los AWS
servicios mediante la venta de credenciales para las funciones 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 tu grupo de identidades y recupera las credenciales temporales 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:
-
Botón Ver solo credenciales: selecciona este botón si quieres ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
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 |
OAuth 2.0 tokens de Google Sign-In |
| Facebook |
graph.facebook.com |
Tokens de acceso de Facebook Login |
| Amazon |
www.amazon.com |
OAuth tokens de Login with Amazon |
Tras la autenticación correcta con el proveedor social, tu aplicación recibe una OAuth respuesta 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ó 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 AWS a los servicios.
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 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:
-
Botón Ver solo credenciales: selecciona este botón si quieres ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
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 |
OAuth 2.0 tokens de Google Sign-In |
| Facebook |
graph.facebook.com |
Tokens de acceso de Facebook Login |
| Amazon |
www.amazon.com |
OAuth tokens de Login with Amazon |
Tras la autenticación correcta con el proveedor social, tu aplicación recibe una OAuth respuesta 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ó AWS STS directamente para asumir una función de IAM y recibir credenciales temporales.
Funcionamiento del acceso social
-
Los usuarios de redes sociales reciben AWS credenciales 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 de redes sociales se intercambian por AWS credenciales, lo que permite conservar la identidad y los permisos del usuario.
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 identificación con tu grupo de identidades por AWS credenciales 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:
-
Botón Ver solo credenciales: seleccione este botón si desea ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
La aplicación inicia sesión en el usuario con un Amazon Cognito. Tras la autenticación correcta con el grupo de usuarios, tu aplicación recibe una respuesta 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, tu aplicación recibe una respuesta OAuth 2.0 que contiene el token de ID (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 coinciden con uno de los clientes de aplicaciones IDs que registró 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 vuelve a validar la firma, el emisor, el vencimiento y la audiencia (aud) del token de ID del grupo de usuarios que coincidieron con uno de los clientes de aplicaciones IDs que registró para el IdP de este 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 (o es el predeterminado)roles-in-token, llama AWS STS
en su nombre y devuelve las credenciales temporales. AWS
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 identificación con tu grupo de identidades por credenciales temporales 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:
-
Botón Ver solo credenciales: seleccione este botón si desea ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
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, tu aplicación recibe una OAuth respuesta 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 coincidían con uno de los clientes de aplicaciones IDs que registró para el IDP de este 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 afirmaciones de la OIDC que las AWS STS evalúan, 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()- Tu aplicación llama AWS STS directamente para cambiar el token OpenID de Amazon Cognito por credenciales temporales 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 AWS credenciales 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 identificadores del grupo de usuarios se intercambian por AWS credenciales 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 AWS los servicios. 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 usar un proveedor de identidades de SAML para iniciar sesión en un usuario y, mediante el flujo mejorado, intercambiar la afirmación de SAML en un grupo de identidades de Amazon Cognito por credenciales temporales AWS para llamar a los servicios. 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 de SAML con su grupo de identidades por credenciales temporales 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:
-
Botón Ver solo credenciales: seleccione este botón si desea ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
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 |
Afirmaciones de SAML de la empresa IdPs |
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 afirmación de SAML comparándola con el proveedor configurado, eligió un rol de IAM en función de los atributos o reglas de SAML y llamó en su nombre. AWS STS
Funcionamiento del acceso SAML
-
Los usuarios empresariales reciben AWS credenciales temporales de los grupos de identidades de Amazon Cognito tras autenticarse con su proveedor de 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 afirmaciones de SAML se intercambian por AWS credenciales, manteniendo 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. 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 identidades OIDC para iniciar sesión en un usuario y, mediante el flujo mejorado, intercambiar el token OIDC de un grupo de identidades de Amazon Cognito por credenciales temporales para llamar a los servicios. AWS 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. 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:
-
Botón Ver solo credenciales: seleccione este botón si desea ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
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 empresa IdPs |
Tras la autenticación correcta con el proveedor de OIDC, tu aplicación recibe una respuesta OAuth 2.0 que contiene los siguientes 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 reclamos o mapeado por reglas) y llamó en su nombre. AWS STS
- OIDC authentication with basic flow
-
En esta sección se muestra cómo puede utilizar un proveedor de identidades OIDC para iniciar sesión en un usuario y, mediante el flujo básico, intercambiar el token OIDC de un grupo de identidades de Amazon Cognito por credenciales temporales para llamar a los servicios. AWS 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. 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:
-
Botón Ver solo credenciales: seleccione este botón si desea ver directamente las AWS credenciales 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"
}
}
-
Botón para ver el flujo de API detallado: selecciona este botón si quieres ver las solicitudes de step-by-step API.
-
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 empresa IdPs |
Tras la autenticación correcta con el proveedor de OIDC, tu aplicación recibe una respuesta OAuth 2.0 que contiene los siguientes 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ó AWS STS directamente para asumir la función de IAM adecuada y recibió credenciales de corta duración.
Funcionamiento de la autenticación OIDC
-
Basado en estándares: el OIDC se basa en la OAuth versión 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.
Siguientes pasos
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.