Acceder Servicios de AWS mediante un grupo de identidades después de iniciar 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.

Acceder Servicios de AWS mediante un grupo de identidades después de iniciar sesión

Una vez que los usuarios inician sesión con un grupo de usuarios, pueden acceder Servicios de AWS con credenciales de API temporales emitidas desde un grupo de identidades.

Su aplicación web o móvil recibe los tokens de un grupo de usuarios. Cuando configura su grupo de usuarios como un proveedor de identidades para su grupo de identidades, el grupo de identidades intercambia los tokens por AWS credenciales temporales. Estas credenciales se pueden ajustar a las funciones de IAM y a sus políticas, que permiten a los usuarios acceder a un conjunto limitado de AWS recursos. Para obtener más información, consulte Flujo de autenticación de grupos de identidades (identidades federadas).

En el siguiente diagrama se muestra cómo una aplicación inicia sesión en un grupo de usuarios, recupera las credenciales del grupo de identidades y solicita un activo a un. Servicio de AWS

Diagrama de flujo de una aplicación que se autentica con un grupo de usuarios de Amazon Cognito y autoriza el acceso AWS a los recursos con un grupo de identidades.

Puede usar las credenciales del grupo de identidades para:

  • Realiza solicitudes de autorización detalladas a Amazon Verified Permissions con las propias credenciales de tu usuario.

  • Conéctese a una API REST de Amazon API Gateway o a una API de AWS AppSync GraphQL que autorice las conexiones con IAM.

  • Conéctese a un backend de base de datos, como Amazon DynamoDB o Amazon RDS, que autorice las conexiones con IAM.

  • Recupere los activos de la aplicación de un bucket de Amazon S3.

  • Inicie una sesión con un escritorio WorkSpaces virtual de Amazon.

Los grupos de identidades no funcionan exclusivamente dentro de una sesión autenticada con un grupo de usuarios. También aceptan la autenticación directamente de proveedores de identidad externos y pueden generar credenciales para los usuarios invitados no autenticados.

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 y. Uso del control de acceso basado en roles Además, para obtener más información sobre los grupos de identidades AWS Identity and Access Management, consulteConceptos de grupos de identidades.

Configuración de 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ó cuando configuró su rol autenticado, o puede elegir un 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 ha elegido Elegir un rol con reglas, introduzca la reclamación de origen obtenida de la autenticación de su usuario, el operador que desee utilizar para comparar la afirmación con la regla, el valor que provocará una coincidencia con esta elección de función y la función que desee asignar cuando la asignación de funciones coincida. Seleccione Agregar otra para crear una regla adicional en función de una condición diferente.

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

    2. 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.

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

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

    • 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 obtener el valor de a partir del ID del grupo de usuarios. <region> Por ejemplo, si el ID del grupo de usuarios esus-east-1_EXAMPLE1, entonces <region>esus-east-1. 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)