

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.

# Configuración de Google como IdP de grupo de identidades
<a name="google"></a>

Los grupos de identidades de Amazon Cognito interactúan con Google para ofrecer una autenticación federada a los usuarios de aplicaciones móviles. En esta sección se explica cómo registrar y configurar su aplicación con Google como IdP.

## Android
<a name="set-up-google-1.android"></a>

**nota**  
Si su aplicación utiliza Google y está disponible en varias plataformas móviles, debe configurarla como [proveedor de OpenID Connect](open-id.md). Agregue todos los clientes creados IDs como valores de audiencia adicionales para una mejor integración. Para obtener más información sobre el modelo de identidad de varios clientes de Google, consulte [Cross-client Identity](https://developers.google.com/accounts/docs/CrossClientAuth).

**Configuración de Google**

Para activar el inicio de sesión de Google para Android, cree un proyecto de consola de Google Developers para su aplicación.

1. Vaya a la [consola de Google Developers](https://console.developers.google.com/) y cree un proyecto.

1. Selecciona **APIs & Servicios y**, a continuación, selecciona **la pantalla de OAuth consentimiento**. Personalice la información que Google muestra a sus usuarios cuando Google solicita su consentimiento para compartir sus datos de perfil con su aplicación.

1. Elija **Credentials** (Credenciales) y luego **Create credentials** (Crear credenciales). Elige el **ID de OAuth cliente**. Seleccione **Android** en **Application type** (Tipo de aplicación). Cree un ID de cliente independiente para cada plataforma en la que desarrolle la aplicación.

1. Desde **Credentials (Credenciales)**, elija **Manage service accounts (Administrar cuentas de servicios)**. Elija **Create service account (Crear cuenta de servicio)**. Ingrese los detalles de su cuenta de servicio y, a continuación, seleccione **Create and continue** (Crear y continuar).

1. Conceda a la cuenta de servicio acceso a su proyecto. Conceda a los usuarios acceso a la cuenta de servicio según lo requiera su aplicación.

1. Elija la nueva cuenta de servicio y luego la pestaña **Keys (Claves)** y **Add key (Agregar clave)**. Cree y descargue una nueva clave JSON.

Para ver más información acerca de cómo utilizar la consola de Google Developers, consulte [Crea y administra proyectos](https://cloud.google.com/resource-manager/docs/creating-managing-projects) en la documentación de Google Cloud.

Para obtener más información acerca de cómo integrar Google en su aplicación web, consulte [Authenticate users with Sign in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg) en la documentación de Google Identity.

**Para agregar un proveedor de identidades (IdP) de Google**

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. Seleccione **Google**.

1. Introduce el **ID de cliente** del OAuth proyecto que creaste en [Google Cloud Platform](https://console.cloud.google.com/). Para obtener más información, consulta Cómo [configurar la OAuth versión 2.0](https://support.google.com/cloud/answer/6158849) en la *ayuda de Google Cloud Platform Console*.

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 asignar a los usuarios de ese IdP el **Rol predeterminado** que configuró al configurar el **Rol autenticado** o puede **Elegir el rol con reglas**.

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

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

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

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

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

**Uso de Google**

Para habilitar el inicio de sesión con Google en su aplicación, siga las instrucciones de la [documentación de Google para Android](https://developers.google.com/identity/sign-in/android/start). Cuando un usuario inicia sesión, solicita un token de autenticación de OpenID Connect a Google. Luego Amazon Cognito utiliza el token para autenticar al usuario y generar un identificador único.

En el siguiente código de muestra se muestra cómo recuperar el token de autenticación de Google Play Service:

```
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
String token = GoogleAuthUtil.getToken(getApplicationContext(), accounts[0].name,
        "audience:server:client_id:YOUR_GOOGLE_CLIENT_ID");
Map<String, String> logins = new HashMap<String, String>();
logins.put("accounts.google.com", token);
credentialsProvider.setLogins(logins);
```

## iOS - Objective-C
<a name="set-up-google-1.ios-objc"></a>

**nota**  
Si su aplicación utiliza Google y está disponible en varias plataformas móviles, configure Google como [proveedor de OpenID Connect](open-id.md). Agrega todos los clientes creados IDs como valores de audiencia adicionales para una mejor integración. Para obtener más información sobre el modelo de identidad de varios clientes de Google, consulte [Cross-client Identity](https://developers.google.com/accounts/docs/CrossClientAuth).

**Configuración de Google**

Para habilitar el inicio de sesión de Google para iOS, cree un proyecto de consola de Google Developers para su aplicación.

1. Vaya a la [consola de Google Developers](https://console.developers.google.com/) y cree un proyecto.

1. Selecciona **APIs & Servicios y**, a continuación, selecciona **la pantalla de OAuth consentimiento**. Personalice la información que Google muestra a sus usuarios cuando Google solicita su consentimiento para compartir sus datos de perfil con su aplicación.

1. Elija **Credentials** (Credenciales) y luego **Create credentials** (Crear credenciales). Elige el **ID de OAuth cliente**. Seleccione **iOS** en **Application type (Tipo de aplicación)**. Cree un ID de cliente independiente para cada plataforma en la que desarrolle la aplicación.

1. Desde **Credentials (Credenciales)**, elija **Manage service accounts (Administrar cuentas de servicios)**. Elija **Create service account (Crear cuenta de servicio)**. Ingrese los detalles de su cuenta de servicio y seleccione **Create and continue (Crear y continuar)**.

1. Conceda a la cuenta de servicio acceso a su proyecto. Conceda a los usuarios acceso a la cuenta de servicio según lo requiera su aplicación.

1. Elija la nueva cuenta de servicio. Elija la pestaña **Keys** (Claves) y **Add key** (Agregar clave). Cree y descargue una nueva clave JSON.

Para ver más información acerca de cómo utilizar la consola de Google Developers, consulte [Crea y administra proyectos](https://cloud.google.com/resource-manager/docs/creating-managing-projects) en la documentación de Google Cloud.

Para ver más información acerca de cómo integrar Google en su aplicación iOS, consulte el tema sobre [inicio de sesión con Google para iOS](https://developers.google.com/identity/sign-in/ios/start-integrating) en la documentación de Google Identity.

**Para agregar un proveedor de identidades (IdP) de Google**

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. Seleccione **Google**.

1. Introduce el **ID de cliente** del OAuth proyecto que creaste en [Google Cloud Platform](https://console.cloud.google.com/). Para obtener más información, consulta Cómo [configurar la OAuth versión 2.0](https://support.google.com/cloud/answer/6158849) en la *ayuda de Google Cloud Platform Console*.

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 asignar a los usuarios de ese IdP el **Rol predeterminado** que configuró al configurar el **Rol autenticado** o puede **Elegir el rol con reglas**.

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

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

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

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

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

**Uso de Google**

Para habilitar el inicio de sesión con Google en su aplicación, siga la [documentación de Google para iOS](https://developers.google.com/identity/sign-in/ios/start/). Si la autenticación tiene éxito, se genera un token de autenticación de OpenID Connect que Amazon Cognito utiliza para autenticar al usuario y generar un identificador único.

Si la autenticación tiene éxito, se genera un objeto `GTMOAuth2Authentication`, que contiene un `id_token` y que Amazon Cognito utiliza para autenticar al usuario y generar un identificador único:

```
- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth error: (NSError *) error {
        NSString *idToken = [auth.parameters objectForKey:@"id_token"];
        credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyGoogle): idToken };
    }
```

## iOS - Swift
<a name="set-up-google-1.ios-swift"></a>

**nota**  
Si su aplicación utiliza Google y está disponible en varias plataformas móviles, configure Google como [proveedor de OpenID Connect](open-id.md). Agrega todos los clientes creados IDs como valores de audiencia adicionales para una mejor integración. Para obtener más información sobre el modelo de identidad de varios clientes de Google, consulte [Cross-client Identity](https://developers.google.com/accounts/docs/CrossClientAuth).

**Configuración de Google**

Para habilitar el inicio de sesión de Google para iOS, cree un proyecto de consola de Google Developers para su aplicación.

1. Vaya a la [consola de Google Developers](https://console.developers.google.com/) y cree un proyecto.

1. Selecciona **APIs & Servicios y**, a continuación, selecciona **la pantalla de OAuth consentimiento**. Personalice la información que Google muestra a sus usuarios cuando Google solicita su consentimiento para compartir sus datos de perfil con su aplicación.

1. Elija **Credentials** (Credenciales) y luego **Create credentials** (Crear credenciales). Elige el **ID de OAuth cliente**. Seleccione **iOS** en **Application type (Tipo de aplicación)**. Cree un ID de cliente independiente para cada plataforma en la que desarrolle la aplicación.

1. Desde **Credentials (Credenciales)**, elija **Manage service accounts (Administrar cuentas de servicios)**. Elija **Create service account (Crear cuenta de servicio)**. Ingrese los detalles de su cuenta de servicio y seleccione **Create and continue (Crear y continuar)**.

1. Conceda a la cuenta de servicio acceso a su proyecto. Conceda a los usuarios acceso a la cuenta de servicio según lo requiera su aplicación.

1. Elija la nueva cuenta de servicio y luego la pestaña **Keys (Claves)** y **Add key (Agregar clave)**. Cree y descargue una nueva clave JSON.

Para ver más información acerca de cómo utilizar la consola de Google Developers, consulte [Crea y administra proyectos](https://cloud.google.com/resource-manager/docs/creating-managing-projects) en la documentación de Google Cloud.

Para ver más información acerca de cómo integrar Google en su aplicación iOS, consulte el tema sobre [inicio de sesión con Google para iOS](https://developers.google.com/identity/sign-in/ios/start-integrating) en la documentación de Google Identity.

Elija **Manage Identity Pools (Administrar grupos de identidades)** de la [página de inicio de la consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home):

**Configuración del proveedor externo en la consola de Amazon Cognito**

1. Elija el nombre del grupo de identidades donde desee habilitar Google como proveedor externo. Se mostrará la página **Dashboard (Panel)** de su grupo de identidades.

1. En la esquina superior derecha de la página **Dashboard (Panel)**, elija **Edit identity pool (Editar grupo de identidades)**. Se visualizará la página Edit identity pool.

1. Desplácese hacia abajo y elija **Authentication providers (Proveedores de autenticación)** para expandir la sección.

1. Elija la pestaña **Google** .

1. Elija **Unlock (Desbloquear)**.

1. Introduzca el ID de cliente de Google que Google le ha entregado y, a continuación, elija **Save Changes (Guardar cambios)**.

**Uso de Google**

Para habilitar el inicio de sesión con Google en su aplicación, siga la [documentación de Google para iOS](https://developers.google.com/identity/sign-in/ios/start/). Si la autenticación tiene éxito, se genera un token de autenticación de OpenID Connect que Amazon Cognito utiliza para autenticar al usuario y generar un identificador único.

Una autenticación correcta da como resultado un objeto `GTMOAuth2Authentication` que contiene un`id_token`. Amazon Cognito utiliza este token para autenticar al usuario y generar un identificador único.

```
func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!) {
    if error != nil {
      print(error.localizedDescription)
    }
    else {
      let idToken = auth.parameters.objectForKey("id_token")
      credentialsProvider.logins = [AWSCognitoLoginProviderKey.Google.rawValue: idToken!]
    }
}
```

## JavaScript
<a name="set-up-google-1.javascript"></a>

**nota**  
Si su aplicación utiliza Google y está disponible en varias plataformas móviles, debe configurar Google como [proveedor de OpenID Connect](open-id.md). Agregue todos los clientes creados IDs como valores de audiencia adicionales para una mejor integración. Para obtener más información sobre el modelo de identidad de varios clientes de Google, consulte [Cross-client Identity](https://developers.google.com/accounts/docs/CrossClientAuth).

**Configuración de Google**

Para habilitar el inicio de sesión con Google en una aplicación JavaScript web, crea un proyecto de consola de Google Developers para tu aplicación.

1. Vaya a la [consola de Google Developers](https://console.developers.google.com/) y cree un proyecto.

1. Selecciona **APIs & Servicios y**, a continuación, selecciona la **pantalla de OAuth consentimiento.** Personalice la información que Google muestra a sus usuarios cuando Google solicita su consentimiento para compartir sus datos de perfil con su aplicación.

1. Elija **Credentials** (Credenciales) y luego **Create credentials** (Crear credenciales). Elige el **ID de OAuth cliente**. Seleccione **Web application** (Aplicación web) en **Application type ** (Tipo de aplicación). Cree un ID de cliente independiente para cada plataforma en la que desarrolle la aplicación.

1. Desde **Credentials (Credenciales)**, elija **Manage service accounts (Administrar cuentas de servicios)**. Elija **Create service account (Crear cuenta de servicio)**. Ingrese los detalles de su cuenta de servicio y seleccione **Create and continue (Crear y continuar)**.

1. Conceda a la cuenta de servicio acceso a su proyecto. Conceda a los usuarios acceso a la cuenta de servicio según lo requiera su aplicación.

1. Elija la nueva cuenta de servicio y luego la pestaña **Keys (Claves)** y **Add key (Agregar clave)**. Cree y descargue una nueva clave JSON.

Para ver más información acerca de cómo utilizar la consola de Google Developers, consulte [Crea y administra proyectos](https://cloud.google.com/resource-manager/docs/creating-managing-projects) en la documentación de Google Cloud.

Para ver más información acerca de cómo integrar Google en su aplicación web, consulte el tema sobre [inicio de sesión con Google](https://developers.google.com/identity/gsi/web/guides/overview) en la documentación de Google Identity.

**Configuración del proveedor externo en la consola de Amazon Cognito**

**Para agregar un proveedor de identidades (IdP) de Google**

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. Seleccione **Google**.

1. Introduce el **ID de cliente** del OAuth proyecto que creaste en [Google Cloud Platform](https://console.cloud.google.com/). Para obtener más información, consulta Cómo [configurar la OAuth versión 2.0](https://support.google.com/cloud/answer/6158849) en la *ayuda de Google Cloud Platform Console*.

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 asignar a los usuarios de ese IdP el **Rol predeterminado** que configuró al configurar el **Rol autenticado** o puede **Elegir el rol con reglas**.

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

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

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

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

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

**Uso de Google**

Para habilitar el inicio de sesión con Google en su aplicación, siga la [documentación de Google para la web](https://developers.google.com/identity/gsi/web/guides/overview).

Si la autenticación tiene éxito, se genera un objeto de respuesta que contiene un `id_token` que Amazon Cognito utiliza para autenticar al usuario y generar un identificador único:

```
function signinCallback(authResult) {
  if (authResult['status']['signed_in']) {

     // Add the Google access token to the Amazon Cognito credentials login map.
     AWS.config.credentials = new AWS.CognitoIdentityCredentials({
        IdentityPoolId: 'IDENTITY_POOL_ID',
        Logins: {
           'accounts.google.com': authResult['id_token']
        }
     });

     // Obtain AWS credentials
     AWS.config.credentials.get(function(){
        // Access AWS resources here.
     });
  }
}
```