Accesso Servizi AWS tramite un pool di identità dopo l'accesso - Amazon Cognito

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

Accesso Servizi AWS tramite un pool di identità dopo l'accesso

Dopo aver effettuato l'accesso con un pool di utenti, gli utenti possono accedere Servizi AWS con credenziali API temporanee emesse da un pool di identità.

La tua app web o mobile riceve token da un pool di utenti. Quando configuri il tuo pool di utenti come provider di identità per il tuo pool di identità, il pool di identità scambia i token con credenziali temporanee AWS . Queste credenziali possono essere applicate ai ruoli IAM e alle relative politiche che consentono agli utenti di accedere a un set limitato di risorse. AWS Per ulteriori informazioni, consulta Flusso di autenticazione dei pool di identità (identità federate).

Il diagramma seguente mostra come un'applicazione accede a un pool di utenti, recupera le credenziali del pool di identità e richiede una risorsa da un. Servizio AWS

Un diagramma di flusso di un'applicazione che si autentica con un pool di utenti di Amazon Cognito e autorizza l'accesso alle AWS risorse con un pool di identità.

Puoi utilizzare le credenziali del pool di identità per:

  • Effettua richieste di autorizzazione dettagliate ad Amazon Verified Permissions con le credenziali del tuo utente.

  • Connettiti a un'API REST di Amazon API Gateway o a un'API AWS AppSync GraphQL che autorizza le connessioni con IAM.

  • Connettiti a un backend di database come Amazon DynamoDB o Amazon RDS che autorizza le connessioni con IAM.

  • Recupera gli asset applicativi da un bucket Amazon S3.

  • Avvia una sessione con un desktop WorkSpaces virtuale Amazon.

I pool di identità non funzionano esclusivamente all'interno di una sessione autenticata con un pool di utenti. Accettano inoltre l'autenticazione direttamente da provider di identità di terze parti e possono generare credenziali per utenti ospiti non autenticati.

Per ulteriori informazioni sull'utilizzo dei pool di identità insieme ai gruppi di pool di utenti per controllare l'accesso alle AWS risorse, consulta e. Aggiunta di gruppi a un bacino d'utenza Utilizzo del controllo degli accessi basato su ruoli Inoltre, per ulteriori informazioni sui pool di identità e AWS Identity and Access Management, vedereConcetti del pool di identità.

Configurazione di un pool di utenti con AWS Management Console

Crea un bacino d'utenza di Amazon Cognito e prendi nota dell'ID bacino d'utenza e dell'ID client app per ciascuna delle app client. Per ulteriori informazioni sulla creazione di bacini d'utenza, consulta l'articolo Nozioni di base sui bacini d'utenza.

Configurazione di un pool di identità con AWS Management Console

La procedura seguente descrive come utilizzare per AWS Management Console integrare un pool di identità con uno o più pool di utenti e app client.

Per aggiungere un gestore dell'identità digitale al pool di utenti Amazon Cognito
  1. Scegli Pool di identità dalla console di Amazon Cognito. Seleziona un pool di identità.

  2. Seleziona la scheda Accesso utente.

  3. Seleziona Aggiungi provider di identità.

  4. Seleziona Pool di utenti Amazon Cognito.

  5. Inserisci un ID del pool di utenti e un ID client dell'app.

  6. Per impostare il ruolo richiesto da Amazon Cognito quando emette credenziali per gli utenti che hanno eseguito l'autenticazione con questo provider, configura Impostazioni ruolo.

    1. Puoi assegnare agli utenti di quell'IdP il ruolo predefinito che hai impostato quando hai configurato il ruolo Autenticato oppure puoi scegliere il ruolo con regole. Con un IdP del pool di utenti Amazon Cognito, puoi anche scegliere un ruolo con attestazione preferred_role nei token. Per ulteriori informazioni sulla richiesta cognito:preferred_role, consultare Assegnazione dei valori di priorità ai gruppi.

      1. Se hai scelto Scegli il ruolo con le regole, inserisci la dichiarazione di origine dall'autenticazione dell'utente, l'operatore che desideri utilizzare per confrontare l'affermazione con la regola, il valore che determinerà la corrispondenza con questa scelta di ruolo e il ruolo che desideri assegnare quando l'assegnazione del ruolo corrisponde. Seleziona Aggiungi un altro per creare una regola aggiuntiva basata su una condizione diversa.

      2. Se hai scelto Choose role with preferred_role claim in token, Amazon Cognito emette le credenziali per il ruolo nel claim dell'utente. cognito:preferred_role Se non è presente alcuna dichiarazione di ruolo preferito, Amazon Cognito emette le credenziali in base alla risoluzione del ruolo.

    2. Scegli una Risoluzione del ruolo. Quando le richieste dell'utente non corrispondono alle regole, puoi negare le credenziali o emettere credenziali per il Ruolo autenticato.

  7. Per modificare i tag principali assegnati da Amazon Cognito quando emette credenziali per gli utenti che hanno eseguito l'autenticazione con questo provider, configura Attributi per il controllo degli accessi.

    • Per non applicare alcun tag principale, scegli Inattivo.

    • Per applicare i tag principali in base alle richieste sub e aud, scegli Utilizza mappature predefinite.

    • Per creare un tuo schema personalizzato di attributi dei tag principali, scegli Utilizza mappature personalizzate. Quindi, inserisci una Chiave tag che deve essere originata da ciascuna Richiesta che desideri rappresentare in un tag.

  8. Seleziona Salva modifiche.

Integrazione di un bacino d'utenza con un pool di identità

Dopo l'autenticazione dell'utente dell'app, aggiungi il relativo token di identità alla mappa degli accessi nel fornitore di credenziali. Il nome del provider dipenderà dal tuo ID bacino d'utenza di Amazon Cognito. avrà la struttura seguente:

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

<region>Puoi ricavare il valore per dall'ID del pool di utenti. Ad esempio, se l'ID del pool di utenti èus-east-1_EXAMPLE1, allora <region>èus-east-1. Se l'ID del pool di utenti èus-west-2_EXAMPLE2, allora <region>è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)