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

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.

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

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

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


        Acceder a AWS las credenciales a través de un grupo de usuarios con un grupo de identidades

Para obtener más información sobre el uso de grupos de identidades junto con grupos de grupos de usuarios para controlar el acceso a sus AWS recursos, consulte Agregar grupos a un grupo de usuarios yUso del control de acceso basado 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.

Configurar un grupo de usuarios con 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.

Configurar un grupo de identidades con AWS Management Console

El siguiente procedimiento describe cómo usarlo AWS Management Console para integrar un grupo de identidades con uno o más grupos de usuarios y aplicaciones cliente.

Para agregar un proveedor de identidades (IdP) de grupos de usuarios de Amazon Cognito
  1. Elija Grupos de identidades en la consola de Amazon Cognito. Seleccione un grupo de identidades.

  2. Elija la pestaña Acceso de usuario.

  3. Seleccione Agregar proveedor de identidades.

  4. Elija Grupo de usuarios de Amazon Cognito.

  5. Introduzca un ID de grupo de usuarios y un ID de cliente de aplicación.

  6. Para establecer el rol que Amazon Cognito solicita cuando emite credenciales a los usuarios que se han autenticado con este proveedor, configure Configuración del rol.

    1. Puede asignar a los usuarios de ese IdP el Rol predeterminado que configuró al configurar el Rol autenticado o puede Elegir el rol con reglas. Con un IdP del grupo de usuarios de Amazon Cognito, también puede Elegir un rol con solicitud preferred_role en los tokens. Para obtener más información acerca de la reclamación de cognito:preferred_role, consulte Asignación de valores de prioridad a los grupos.

      1. Si eligió Elegir rol con reglas, ingrese la Reclamación de origen de la autenticación del usuario, el Operador con el que desea comparar la afirmación, el Valor que hará que coincida con esta elección de rol y el Rol que desea asignar cuando la Asignación del rol coincida. Seleccione Agregar otra para crear una regla adicional en función de una condición diferente.

      2. Si seleccionó Elegir rol con solicitud preferred_role en tokens, Amazon Cognito emitirá credenciales para el rol en la solicitud de cognito:preferred_role de su usuario. Si no hay ninguna solicitud de rol preferido, Amazon Cognito emite las credenciales basándose en su Resolución de rol.

      3. Elija una Resolución de rol. Cuando las reclamaciones del usuario no coinciden con las reglas, puede denegar las credenciales o emitir credenciales para el Rol autenticado.

  7. Para cambiar las etiquetas de la entidad principal que Amazon Cognito asigna cuando emite credenciales a los usuarios que se han autenticado con este proveedor, configure Atributos para el control de acceso.

    1. Para no aplicar ninguna etiqueta de entidad principal, elija Inactivo.

    2. Para aplicar etiquetas de entidades principales en función de las reclamaciones sub y aud, elija Usar mapeos predeterminados.

    3. Para crear su propio esquema personalizado de atributos para las etiquetas de la entidades principales, elija Usar mapeos personalizados. A continuación, ingrese una Clave de etiqueta que desee obtener de cada Reclamación que desee representar en una etiqueta.

  8. Seleccione Guardar cambios.

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>

Puede derivar el valor de <region>a partir del ID del grupo de usuarios. Por ejemplo, si el ID del grupo de usuarios esus-east-1_EXAMPLE1, entonces <region>esus-east-1, y si el ID del grupo de usuarios esus-west-2_EXAMPLE2, entonces <region>esus-west-2.

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)