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

Una vez que los usuarios hayan iniciado sesión con un grupo de usuarios, podrán acceder a los Servicios de AWS con credenciales de API temporales emitidas desde un grupo de identidades.

Su aplicación web o móvil recibe los tokens desde un grupo de usuarios. Cuando configura el grupo de usuarios como proveedor de identidades para su grupo de identidades, este intercambia los tokens por credenciales temporales de AWS. El ámbito de estas credenciales puede incluir los roles de IAM y sus políticas, que permiten a los usuarios acceder a un conjunto limitado de recursos de AWS. Para obtener más información, consulte Flujo de autenticación de grupos de identidades.

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 recurso desde 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 a los recursos de AWS con un grupo de identidades.

Puede usar las credenciales del grupo de identidades para:

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

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

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

  • Recuperar recursos de aplicaciones desde un bucket de Amazon S3.

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

Los grupos de identidades no funcionan exclusivamente en una sesión autenticada con un grupo de usuarios. También aceptan la autenticación directamente de proveedores de identidades 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 conjuntos de grupos de usuarios para controlar el acceso a los recursos de AWS, consulte Agregar grupos a un grupo de usuarios y Uso del control de acceso basado en roles. Consulte también Flujo de autenticación de grupos de identidades 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 Consola de administración de AWS

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 Consola de administración de AWS

En el procedimiento siguiente se describe cómo utilizar la Consola de administración de AWS para integrar un grupo de identidades con uno o varios 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 dar a los usuarios de ese IdP el Rol predeterminado que ha configurado al configurar el 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 el valor de la opción Reclamación (o notificación) de origen de la autenticación del usuario, el Operador que desea usar para comparar la notificación con la regla, el Valor que hará que coincida con esta elección de rol y el Rol que desea asignar cuando la Asignación del roles coincida. Seleccione Agregar otra para crear una regla adicional en función de una condición diferente.

      2. Si ha seleccionado Elegir rol con solicitud preferred_role en tokens, Amazon Cognito emite credenciales para el rol en la notificación 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.

    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 <region> del ID del grupo de usuarios. Por ejemplo, si el ID del grupo de usuarios es us-east-1_EXAMPLE1, entonces <region> es us-east-1. Por ejemplo, si el ID del grupo de usuarios es us-west-2_EXAMPLE2, entonces <region> es us-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)