Cambio de los usuarios sin autenticar a los usuarios autenticados (Grupos de identidades) - 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.

Cambio de los usuarios sin autenticar a los usuarios autenticados (Grupos de identidades)

Los grupos de identidades de Amazon Cognito admiten usuarios no autenticados y autenticados. Los usuarios no autenticados reciben acceso a sus recursos AWS incluso si no han iniciado sesión con ninguno de sus proveedores de identidad (IdP). Este grado de acceso es útil para mostrar contenido a los usuarios antes de que inicien sesión. Cada usuario sin autenticar tiene una identidad única en el grupo de identidades, aunque no hayan iniciado sesión y se hayan autenticado individualmente.

En esta sección se describe el caso en el que su usuario decide cambiar y en lugar de iniciar sesión con una identidad sin autenticar usa una identidad autenticada.

Android

Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Con el tiempo podrían decidir iniciar sesión con uno de los IdP compatibles. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.

Se informará a la aplicación de una fusión de perfil a través de la interfaz IdentityChangedListener. Implemente el método identityChanged en la interfaz para recibir estos mensajes:

@override public void identityChanged(String oldIdentityId, String newIdentityId) { // handle the change }

iOS - Objective-C

Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Con el tiempo podrían decidir iniciar sesión con uno de los IdP compatibles. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.

NSNotificationCenter informa a la aplicación de que se ha producido una fusión de perfil:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(identityIdDidChange:) name:AWSCognitoIdentityIdChangedNotification object:nil]; -(void)identityDidChange:(NSNotification*)notification { NSDictionary *userInfo = notification.userInfo; NSLog(@"identity changed from %@ to %@", [userInfo objectForKey:AWSCognitoNotificationPreviousId], [userInfo objectForKey:AWSCognitoNotificationNewId]); }

iOS - Swift

Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Con el tiempo podrían decidir iniciar sesión con uno de los IdP compatibles. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.

NSNotificationCenter informa a la aplicación de que se ha producido una fusión de perfil:

[NSNotificationCenter.defaultCenter().addObserver(observer: self selector:"identityDidChange" name:AWSCognitoIdentityIdChangedNotification object:nil) func identityDidChange(notification: NSNotification!) { if let userInfo = notification.userInfo as? [String: AnyObject] { print("identity changed from: \(userInfo[AWSCognitoNotificationPreviousId]) to: \(userInfo[AWSCognitoNotificationNewId])") } }

JavaScript

Usuario sin autenticar inicialmente

Los usuarios suelen comenzar con el rol sin autenticar. Para este rol, usted establece la propiedad de las credenciales del objeto de configuración sin una propiedad de inicio de sesión. En este caso, la configuración predeterminada podría tener el siguiente aspecto:

// set the default config object var creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030' }); AWS.config.credentials = creds;

Cambie a usuario autenticado

Cuando un usuario sin autenticar inicia sesión en un proveedor de identidad y tiene un token, puede cambiar el usuario de no estar autenticado a estar autenticado llamando a una función personalizada que actualiza el objeto de las credenciales y añade el token de inicio de sesión:

// Called when an identity provider has a token for a logged in user function userLoggedIn(providerName, token) { creds.params.Logins = creds.params.Logins || {}; creds.params.Logins[providerName] = token; // Expire credentials to refresh them on the next request creds.expired = true; }

También puede crear un objeto de CognitoIdentityCredentials. Si lo hace, debe restablecer las propiedades de las credenciales de cualquier objeto de servicio existente para reflejar la información de configuración de las credenciales actualizadas. Consulte la sección relativa al uso del objeto de configuración global.

Para obtener más información sobre el objeto CognitoIdentityCredentials, consulte .CognitoIdentityCredentials de AWS en la referencia de la API de AWS SDK for JavaScript.

Unity

Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Con el tiempo podrían decidir iniciar sesión con uno de los IdP compatibles. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.

Puede suscribirse a IdentityChangedEvent para que se le notifiquen las fusiones de perfil:

credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e) { // handle the change Debug.log("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId); };

Xamarin

Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Con el tiempo podrían decidir iniciar sesión con uno de los IdP compatibles. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.

credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e){ // handle the change Console.WriteLine("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId); };