Basculement d'utilisateurs non authentifiés à des utilisateurs authentifiés (groupes d'identités) - Amazon Cognito

Basculement d'utilisateurs non authentifiés à des utilisateurs authentifiés (groupes d'identités)

Les groupes d'identités Amazon Cognito prennent en charge les utilisateurs authentifiés et non authentifiés. Les utilisateurs non authentifiés bénéficient d'un accès à vos ressources AWS, même s'ils ne sont pas connectés avec l'un de vos fournisseurs d'identité (IdP). Ce degré d'accès est utile pour afficher du contenu aux utilisateurs avant qu'ils se connectent. Chaque utilisateur non authentifié comporte une identité unique dans le groupe d'identités, même s'il n'a pas été individuellement connecté et authentifié.

Cette section décrit le cas où votre utilisateur choisirait de basculer d'une connexion sous une identité non authentifiée à une connexion sous une identité authentifiée.

Android

Les utilisateurs peuvent se connecter à votre application en tant qu'invités non authentifiés. Ils peuvent finir par décider de se connecter via l'un des fournisseurs d'identité pris en charge. Amazon Cognito veille à ce qu'une ancienne identité conserve le même identifiant unique que la nouvelle, et que les données de profil sont fusionnées automatiquement.

Votre application est informée d'une fusion de profils via l'interface IdentityChangedListener. Mettez en œuvre la méthode identityChanged dans l'interface pour recevoir ces messages :

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

iOS – objective-C

Les utilisateurs peuvent se connecter à votre application en tant qu'invités non authentifiés. Ils peuvent finir par décider de se connecter via l'un des fournisseurs d'identité pris en charge. Amazon Cognito veille à ce qu'une ancienne identité conserve le même identifiant unique que la nouvelle, et que les données de profil sont fusionnées automatiquement.

NSNotificationCenter informe votre application d'une fusion de profils :

[[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

Les utilisateurs peuvent se connecter à votre application en tant qu'invités non authentifiés. Ils peuvent finir par décider de se connecter via l'un des fournisseurs d'identité pris en charge. Amazon Cognito veille à ce qu'une ancienne identité conserve le même identifiant unique que la nouvelle, et que les données de profil sont fusionnées automatiquement.

NSNotificationCenter informe votre application d'une fusion de profils :

[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

Utilisateur initialement non authentifié

Les utilisateurs commencent généralement avec le rôle non authentifié. Pour ce rôle, vous définissez la propriété des informations d'identification de votre objet de configuration sans propriété d'identifiants. Dans ce cas, votre configuration par défaut peut se présenter comme suit :

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

Basculement vers un utilisateur authentifié

Lorsqu'un utilisateur non authentifié se connecte à un fournisseur d'identité (IdP) et que vous avez un jeton, vous pouvez faire basculer l'utilisateur non authentifié en utilisateur authentifié en appelant une fonction personnalisée qui met à jour l'objet des informations d'identification et ajoute le jeton d'identifiants :

// 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; }

Vous pouvez également créer un objet CognitoIdentityCredentials. Dans ce cas, vous devez réinitialiser les propriétés d'informations d'identification de n'importe quel objet de service existant pour refléter les informations de configuration des informations d'identification mises à jour. Consultez Utilisation de l'objet de configuration globale.

Pour plus d'informations sur l'objet CognitoIdentityCredentials, consultez AWS.CognitoIdentityCredentials dans la référence d'API AWS SDK for JavaScript.

Unity

Les utilisateurs peuvent se connecter à votre application en tant qu'invités non authentifiés. Ils peuvent finir par décider de se connecter via l'un des fournisseurs d'identité pris en charge. Amazon Cognito veille à ce qu'une ancienne identité conserve le même identifiant unique que la nouvelle, et que les données de profil sont fusionnées automatiquement.

Pour être informé des fusions de profil, vous pouvez vous abonner à l'événement IdentityChangedEvent :

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

Xamarin

Les utilisateurs peuvent se connecter à votre application en tant qu'invités non authentifiés. Ils peuvent finir par décider de se connecter via l'un des fournisseurs d'identité pris en charge. Amazon Cognito veille à ce qu'une ancienne identité conserve le même identifiant unique que la nouvelle, et que les données de profil sont fusionnées automatiquement.

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