Usa Amazon Cognito Identity per autenticare gli utenti - AWS SDK for JavaScript

La guida API di riferimento AWS SDK for JavaScript V3 descrive in dettaglio tutte le API operazioni per la AWS SDK for JavaScript versione 3 (V3).

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

Usa Amazon Cognito Identity per autenticare gli utenti

Il modo consigliato per ottenere AWS le credenziali per gli script del browser consiste nell'utilizzare il client di credenziali di Amazon Cognito Identity. CognitoIdentityClient Amazon Cognito consente l'autenticazione degli utenti tramite provider di identità di terze parti.

Per utilizzare Amazon Cognito Identity, devi prima creare un pool di identità nella console Amazon Cognito. Un pool di identità rappresenta il gruppo di identità che l'applicazione fornisce agli utenti. Le identità fornite agli utenti identificano in modo univoco ogni account utente. Le identità di Amazon Cognito non sono credenziali. Vengono scambiate con credenziali utilizzando il supporto per la federazione delle identità web in (). AWS Security Token Service AWS STS

Amazon Cognito ti aiuta a gestire l'astrazione delle identità tra più provider di identità. L'identità caricata viene quindi scambiata con le credenziali in AWS STS.

Configurazione dell'oggetto credenziali di Amazon Cognito Identity

Se non ne hai ancora creato uno, crea un pool di identità da utilizzare con gli script del browser nella console Amazon Cognito prima di configurare il client Amazon Cognito. Crea e associa ruoli IAM autenticati e non autenticati per il tuo pool di identità. Per ulteriori informazioni, consulta Tutorial: Creazione di un pool di identità nella Amazon Cognito Developer Guide.

L'identità degli utenti non autenticati non viene verificata, il che rende questo ruolo appropriato per gli utenti ospiti della tua app o nei casi in cui non importa se la loro identità è stata verificata. Gli utenti autenticati accedono all'applicazione tramite un provider di identità di terza parte che verifica la loro identità. Assicurati di creare l'ambito delle autorizzazioni di risorse in modo appropriato per evitare che utenti non autenticati possano accedere a esse.

Dopo aver configurato un pool di identità, utilizza il fromCognitoIdentityPool metodo di @aws-sdk/credential-providers per recuperare le credenziali dal pool di identità. Nel seguente esempio di creazione di un client Amazon S3, sostituisci AWS_REGION con la regione e IDENTITY_POOL_ID con l'ID del pool di identità.

// Import required AWS SDK clients and command for Node.js import {S3Client} from "@aws-sdk/client-s3"; import {fromCognitoIdentityPool} from "@aws-sdk/credential-providers"; const REGION = AWS_REGION; const s3Client = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ clientConfig: { region: REGION }, // Configure the underlying CognitoIdentityClient. identityPoolId: 'IDENTITY_POOL_ID', logins: { // Optional tokens, used for authenticated login. }, }) });

La proprietà logins opzionale è una mappa di nomi di provider di identità ai token di identità per tali provider. Il modo in cui ottieni il token dal provider di identità dipende dal provider utilizzato. Ad esempio, se utilizzi un pool di utenti Amazon Cognito come provider di autenticazione, puoi utilizzare un metodo simile a quello riportato di seguito.

// Get the Amazon Cognito ID token for the user. 'getToken()' below. let idToken = getToken(); let COGNITO_ID = "COGNITO_ID"; // 'COGNITO_ID' has the format 'cognito-idp.REGION.amazonaws.com/COGNITO_USER_POOL_ID' let loginData = { [COGNITO_ID]: idToken, }; const s3Client = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ clientConfig: { region: REGION }, // Configure the underlying CognitoIdentityClient. identityPoolId: 'IDENTITY_POOL_ID', logins: loginData }) }); // Strips the token ID from the URL after authentication. window.getToken = function () { var idtoken = window.location.href; var idtoken1 = idtoken.split("=")[1]; var idtoken2 = idtoken1.split("&")[0]; var idtoken3 = idtoken2.split("&")[0]; return idtoken3; };

Trasforma gli utenti non autenticati in utenti autenticati

Amazon Cognito supporta utenti autenticati e non autenticati. Gli utenti non autenticati ottengono l'accesso alle risorse anche se non sono connessi con un provider di identità. Tale livello di accesso è utile per visualizzare i contenuti agli utenti prima che effettuino l'accesso. Ogni utente non autenticato ha un'identità unica in Amazon Cognito anche se non è stato effettuato l'accesso e l'autenticazione individualmente.

Utente inizialmente non autenticato

Gli utenti in genere iniziano con il ruolo non autenticato, per cui è possibile impostare la proprietà delle credenziali dell'oggetto di configurazione senza una proprietà logins. In questo caso, le tue credenziali predefinite potrebbero essere le seguenti:

// Import the required AWS SDK for JavaScript v3 modules. import {fromCognitoIdentityPool} from "@aws-sdk/credential-providers"; // Set the default credentials. const creds = fromCognitoIdentityPool({ identityPoolId: 'IDENTITY_POOL_ID', clientConfig: { region: REGION } // Configure the underlying CognitoIdentityClient. });

Cambio a utente autenticato

Quando un utente non autenticato accede a un provider di identità e disponi di un token, puoi passare da un utente non autenticato a uno autenticato chiamando una funzione personalizzata che aggiorna l'oggetto credenziali e aggiunge il token. logins

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