

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
<a name="amazon-cognito-integrating-user-pools-with-identity-pools"></a>

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 desde un grupo de usuarios. Al configurar su grupo de usuarios como 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](authentication-flow.md).

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 AWS a los recursos con un grupo de identidades.](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/access-services-identity-pool.png)


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.
+ Conéctese a una API REST de Amazon API Gateway o a una API de AWS AppSync GraphQL 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.
+ Inicie una sesión con un escritorio WorkSpaces virtual de Amazon.

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 grupos de grupos de usuarios para controlar el acceso a sus AWS recursos, consulte [Agregar grupos a un grupo de usuarios](cognito-user-pools-user-groups.md) y[Uso del control de acceso basado en roles](role-based-access-control.md). Además, para obtener más información sobre los grupos de identidades AWS Identity and Access Management, consulte[Flujo de autenticación de grupos de identidades](authentication-flow.md).

## Configuración de un grupo de usuarios con Consola de administración de AWS
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-setting-up"></a>

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](getting-started-user-pools.md).

## Configurar un grupo de identidades con Consola de administración de AWS
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-configuring"></a>

El siguiente procedimiento describe cómo usarlo Consola de administración de AWS 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](https://console.aws.amazon.com/cognito/home). Seleccione un grupo de identidades.

1. Elija la pestaña **Acceso de usuario**.

1. Seleccione **Agregar proveedor de identidades**.

1. Elija **Grupo de usuarios de Amazon Cognito**.

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

1. 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](cognito-user-pools-user-groups.md#assigning-precedence-values-to-groups).

      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.

      1. 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**.

   1. 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**.

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

1. Seleccione **Guardar cambios**.

## Integración de un grupo de usuarios con un grupo de identidades
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-using"></a>

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 {{<region>}} de la **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`. 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)
```

------