Acceso a los servicios de AWS utilizando un grupo de identidades después del inicio de sesión - Amazon Cognito

Acceso a los servicios de AWS utilizando un grupo de identidades después del inicio de sesión

Puede permitir a los usuarios que inicien sesión con un grupo de usuarios y, luego, accedan a los servicios de AWS con un grupo de identidades.

Tras una autenticación correcta, la aplicación web o la móvil recibirá tokens de grupos de usuarios desde Amazon Cognito. Puede utilizar estos tokens para recuperar las credenciales de AWS que permiten a la aplicación obtener acceso a otros servicios de AWS. Para obtener más información, consulte Introducción a los grupos de identidades de Amazon Cognito (identidades federadas) .


        Acceso a credenciales de AWS mediante un grupo de usuarios con un grupo de identidades

A fin de obtener más información sobre el uso de grupos de identidades junto con conjuntos de grupos de usuarios para controlar el acceso a los recursos de AWS, consulte Agregar grupos a un grupo de usuarios y Control de acceso con base en roles. Consulte también Conceptos de grupos de identidades (identidades federadas) para obtener más información sobre los grupos de identidades y AWS Identity and Access Management.

Configuración de un grupo de usuarios con la AWS Management Console

Cree un grupo de usuarios de Amazon Cognito y anote el ID del grupo de usuarios y el ID del cliente de la aplicación de cada una de sus aplicaciones cliente. Para obtener más información acerca de la creación de grupos de usuarios, consulte Introducción a los grupos de usuarios.

Configuración de un grupo de identidades con la AWS Management Console

En el procedimiento siguiente se describe cómo utilizar la AWS Management Console para integrar un grupo de identidades con uno o varios grupos de usuarios y aplicaciones cliente.

Original console

Para configurar el grupo de identidades

  1. Abra la consola de Amazon Cognito. Escriba laAWSCredenciales de .

  2. Seleccione Manage Identity Pools (Administrar grupos de identidades).

  3. Elija el nombre del grupo de identidades para el que desee habilitar grupos de usuarios de Amazon Cognito como proveedor.

  4. En la página Dashboard (Panel), elija Edit identity pool (Editar grupo de identidades).

  5. Expanda la sección Authentication providers (Proveedores de autenticación).

  6. Elija Cognito.

  7. Escriba laID del grupo de usuarios.

  8. Escriba laID de cliente de aplicación. Tiene que ser el mismo ID de aplicación cliente que recibió al crear la aplicación en la sección Sus grupos de usuarios de la AWS Management Console para Amazon Cognito.

  9. Si tiene más aplicaciones o grupos de usuarios, seleccione Add Another Provider (Añadir otro proveedor) y escriba el User Pool ID (ID de grupo de usuarios) y App Client ID (ID de cliente de aplicación) para cada aplicación de cada grupo de usuarios.

  10. Cuando no haya más aplicaciones o grupos de usuarios que desee añadir, elija Save Changes (Guardar cambios). Si todo funciona correctamente, verá Changes saved successfully (Cambios guardados correctamente) en la página Dashboard (Panel).

New console

Para configurar el grupo de identidades

  1. Vaya a la consola de Amazon Cognito. Escriba laAWSCredenciales de .

  2. Elija Manage Federated Identities (Administrar identidades federadas).

  3. Elija el nombre del grupo de identidades para el que desee habilitar grupos de usuarios de Amazon Cognito como proveedor.

  4. En la página Dashboard (Panel), elija Edit identity pool (Editar grupo de identidades).

  5. Expanda la sección Authentication providers (Proveedores de autenticación).

  6. Elija Cognito.

  7. Escriba laID del grupo de usuarios.

  8. Escriba laID de cliente de aplicación. Tiene que ser el mismo ID de aplicación de cliente que recibió al crear la aplicación en la sección User pools (Grupos de usuarios) de la consola.

  9. Si tiene más aplicaciones o grupos de usuarios, seleccione Add Another Provider (Añadir otro proveedor) y escriba el User Pool ID (ID de grupo de usuarios) y App Client ID (ID de cliente de aplicación) para cada aplicación de cada grupo de usuarios.

  10. Cuando no haya más aplicaciones o grupos de usuarios que desee añadir, elija Save Changes (Guardar cambios). Si todo funciona correctamente, verá Changes saved successfully (Cambios guardados correctamente) en la página Dashboard (Panel).

Integración de un grupo de usuarios con un grupo de identidades

Una vez que el usuario de la aplicación esté autenticado, añada el token de identidad de dicho usuario en la asignación de inicios de sesión en el proveedor de credenciales. El nombre del proveedor dependerá del ID del grupo de usuarios de Amazon Cognito. Tendrá la estructura siguiente:

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

El valor de <region> será el mismo que el de la región que figura en User Pool ID (ID de grupo de usuarios). Por ejemplo, cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789.

JavaScript
var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, result) { if (result) { console.log('You are now logged in.'); // Add the User's Id Token to the Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'YOUR_IDENTITY_POOL_ID', Logins: { 'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken() } }); } }); }
Android
cognitoUser.getSessionInBackground(new AuthenticationHandler() { @Override public void onSuccess(CognitoUserSession session) { String idToken = session.getIdToken().getJWTToken(); Map<String, String> logins = new HashMap<String, String>(); logins.put("cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>", session.getIdToken().getJWTToken()); credentialsProvider.setLogins(logins); } });
iOS - objective-C
AWSServiceConfiguration *serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; AWSCognitoIdentityUserPoolConfiguration *userPoolConfiguration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:@"YOUR_CLIENT_ID" clientSecret:@"YOUR_CLIENT_SECRET" poolId:@"YOUR_USER_POOL_ID"]; [AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:serviceConfiguration userPoolConfiguration:userPoolConfiguration forKey:@"UserPool"]; AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"]; AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YOUR_IDENTITY_POOL_ID" identityProviderManager:pool];
iOS - swift
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil) let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", poolId: "YOUR_USER_POOL_ID") AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool") let pool = AWSCognitoIdentityUserPool(forKey: "UserPool") let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YOUR_IDENTITY_POOL_ID", identityProviderManager:pool)