Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Passaggio da utenti non autenticati a utenti autenticati
I pool di identità di Amazon Cognito supportano sia utenti autenticati che non autenticati. Gli utenti non autenticati ricevono l'accesso alle tue AWS risorse anche se non hanno effettuato l'accesso con nessuno dei tuoi provider di identità (). IdPs Questo livello di accesso è utile per mostrare i contenuti agli utenti prima che effettuino l'accesso. Ogni utente non autenticato ha un'identità unica nel pool di identità, anche se non è stato effettuato l'accesso e l'autenticazione individualmente.
Questa sezione descrive il caso in cui l'utente sceglie di passare dall'accesso con un'identità non autenticata all'utilizzo di un'identità autenticata.
Android
Gli utenti possono accedere all'applicazione come ospiti non autenticati. Alla fine potrebbero decidere di accedere utilizzando uno dei supporti. IdPs Amazon Cognito verifica che una vecchia identità usi lo stesso identificatore univoco della nuova identità e i dati del profilo vengono uniti automaticamente.
La tua applicazione viene informata di un'unione dei profili tramite l'interfaccia IdentityChangedListener. Implementa il metodo identityChanged nell'interfaccia per ricevere questi messaggi:
@override public void identityChanged(String oldIdentityId, String newIdentityId) { // handle the change }
iOS - Objective-C
Gli utenti possono accedere alla tua applicazione come ospiti non autenticati. Alla fine potrebbero decidere di accedere utilizzando uno dei supporti. IdPs Amazon Cognito verifica che una vecchia identità usi lo stesso identificatore univoco della nuova identità e i dati dei due profili vengono uniti automaticamente.
NSNotificationCenter informa la tua applicazione di un'unione dei profili:
[[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
Gli utenti possono accedere alla tua applicazione come ospiti non autenticati. Alla fine potrebbero decidere di accedere utilizzando uno dei supporti. IdPs Amazon Cognito verifica che una vecchia identità usi lo stesso identificatore univoco della nuova identità e i dati dei due profili vengono uniti automaticamente.
NSNotificationCenter informa la tua applicazione di un'unione dei profili:
[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
Utente inizialmente non autenticato
Gli utenti in genere iniziano con il ruolo non autenticato. Per questo ruolo, crei un fornitore di fromCognitoIdentityPool credenziali senza una logins proprietà e lo colleghi ai tuoi clienti di servizio. In questo caso, la configurazione predefinita potrebbe essere simile alla seguente:
import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; // Create a credentials provider without a logins map for the unauthenticated role. const region = "us-east-1"; const credentials = fromCognitoIdentityPool({ identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030", clientConfig: { region } }); // Attach the provider to each service client that needs credentials. const client = new SomeServiceClient({ region, credentials });
Cambio a utente autenticato
Quando un utente non autenticato accede a un IdP e disponi di un token, puoi passare da non autenticato a autenticato chiamando una funzione personalizzata che crea un nuovo fromCognitoIdentityPool provider con la mappa che contiene il token: logins
// Called when an identity provider has a token for a logged in user function userLoggedIn(providerName, token) { // Re-create the provider with a logins map to switch to the authenticated role. const credentials = fromCognitoIdentityPool({ identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030", logins: { [providerName]: token }, clientConfig: { region } }); // Re-create any service clients so they pick up the new credentials. // SomeServiceClient is a placeholder: import the client for the service you're calling // (for example, S3Client from @aws-sdk/client-s3). const client = new SomeServiceClient({ region, credentials }); }
Poiché il fromCognitoIdentityPool provider è collegato direttamente a ciascun client di servizio, passare dal ruolo non autenticato a quello autenticato significa creare un nuovo provider con la logins mappa e passarla a tutti i client di servizio creati successivamente. A differenza dell' AWS SDK per la JavaScript v2, l'SDK v3 non utilizza un oggetto di configurazione globale, quindi non ci sono credenziali condivise da reimpostare.
Per ulteriori informazioni sul fromCognitoIdentityPool provider, consulta AWS SDK per i provider di credenziali v3. JavaScript