

 La [AWS SDK per JavaScript V3 API Reference Guide](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) descrive in dettaglio tutte le operazioni API per la AWS SDK per 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à.

# Imposta le credenziali
<a name="setting-credentials"></a>

AWS utilizza le credenziali per identificare chi sta chiamando i servizi e se è consentito l'accesso alle risorse richieste. 

Sia che venga eseguito in un browser Web o in un server Node.js, il JavaScript codice deve ottenere credenziali valide prima di poter accedere ai servizi tramite l'API. Le credenziali possono essere impostate per servizio, passando le credenziali direttamente a un oggetto di servizio.

Esistono diversi modi per impostare le credenziali che differiscono tra Node.js e JavaScript nei browser Web. Gli argomenti in questa sezione descrivono come impostare le credenziali in Node.js o nei browser Web. In ogni caso, le opzioni sono riportate in ordine consigliato.

## Procedure consigliate per le credenziali
<a name="credentials-best-practices"></a>

L'impostazione corretta delle credenziali garantisce che l'applicazione o lo script di browser possano accedere ai servizi e alle risorse necessari, riducendo al minimo l'esposizione a problemi di sicurezza che possono inficiare le applicazioni mission critical o compromettere i dati sensibili.

Un importante principio da applicare durante l'impostazione delle credenziali è concedere sempre i privilegi minimi necessari per l'attività. È più sicuro fornire le autorizzazioni minime per le risorse e aggiungere ulteriori autorizzazioni in base alle esigenze, invece di fornire autorizzazioni che superano il privilegio minimo e, di conseguenza, dover risolvere i problemi di sicurezza scoperti più tardi. Ad esempio, a meno che non sia necessario leggere e scrivere singole risorse, come oggetti in un bucket Amazon S3 o una tabella DynamoDB, imposta tali autorizzazioni in modalità di sola lettura.

*Per ulteriori informazioni sulla concessione del privilegio minimo, consulta la sezione [Concedi il minimo privilegio dell'argomento Best Practices](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) nella IAM User Guide.*

**Topics**
+ [Procedure consigliate per le credenziali](#credentials-best-practices)
+ [Impostare le credenziali in Node.js](setting-credentials-node.md)
+ [Impostare le credenziali in un browser Web](setting-credentials-browser.md)

# Impostare le credenziali in Node.js
<a name="setting-credentials-node"></a>

Consigliamo ai nuovi utenti che si stanno sviluppando localmente e che non dispongono di un metodo di autenticazione da parte del datore di lavoro di effettuare la configurazione AWS IAM Identity Center. Per ulteriori informazioni, consulta [Autenticazione SDK con AWS](getting-your-credentials.md).

Vi sono diversi modi su Node.js per fornire le credenziali all'SDK. Alcuni di questi sono più sicuri e altri offrono più comodità durante lo sviluppo di un'applicazione. Quando ottenete le credenziali in Node.js, fate attenzione a non affidarvi a più di una fonte, ad esempio una variabile di ambiente e un file JSON che caricate. È possibile modificare le autorizzazioni sotto cui il codice viene eseguito senza realizzare che la modifica è avvenuta.

AWS SDK per JavaScript V3 fornisce una catena di provider di credenziali predefinita in Node.js, quindi non è necessario fornire un provider di credenziali in modo esplicito. La [catena di provider di credenziali](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain) predefinita tenta di risolvere le credenziali da una varietà di fonti diverse con una determinata precedenza, finché non viene restituita una credenziale da una delle fonti. [Puoi trovare la catena di fornitori di credenziali per SDK per V3 qui. JavaScript ](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromnodeproviderchain)

## Catena di fornitori di credenziali
<a name="credchain"></a>

Tutti SDKs hanno una serie di luoghi (o fonti) che controllano per ottenere credenziali valide da utilizzare per effettuare una richiesta a un. Servizio AWS Dopo aver trovato credenziali valide, la ricerca viene interrotta. Questa ricerca sistematica è chiamata catena di fornitori di credenziali predefinita. 

Per ogni fase della catena, esistono diversi modi per impostare i valori. L'impostazione dei valori direttamente nel codice ha sempre la precedenza, seguita dall'impostazione come variabili di ambiente e quindi nel AWS `config` file condiviso. Per ulteriori informazioni, vedete la [precedenza delle impostazioni nella *AWS SDKs and Tools Reference*](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#precedenceOfSettings) Guide. 

La *AWS SDKs and Tools Reference Guide* contiene informazioni sulle impostazioni di configurazione SDK utilizzate da tutti AWS SDKs e da. AWS CLI Per ulteriori informazioni su come configurare l'SDK tramite il AWS `config` file condiviso, consulta File di [configurazione e credenziali condivisi](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html). [Per ulteriori informazioni su come configurare l'SDK tramite l'impostazione delle variabili di ambiente, consulta Supporto per le variabili di ambiente.](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)

Con cui eseguire l'autenticazione AWS, AWS SDK per JavaScript controlla i fornitori di credenziali nell'ordine elencato nella tabella seguente.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html)

Se hai seguito l'approccio consigliato per i nuovi utenti per iniziare, configurerai AWS IAM Identity Center l'autenticazione durante l'argomento [Autenticazione SDK con AWS](getting-your-credentials.md) Guida introduttiva. Altri metodi di autenticazione sono utili per diverse situazioni. Per evitare rischi per la sicurezza, consigliamo di utilizzare sempre credenziali a breve termine. Per altre procedure relative ai metodi di autenticazione, consulta [Autenticazione e accesso](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) nella *Guida di riferimento agli strumenti AWS SDKs e agli strumenti*.

Gli argomenti in questa sezione descrivono come caricare le credenziali su Node.js.

**Topics**
+ [Catena di fornitori di credenziali](#credchain)
+ [Carica le credenziali in Node.js dai ruoli IAM per Amazon EC2](loading-node-credentials-iam.md)
+ [Caricare le credenziali per una funzione Lambda di Node.js](loading-node-credentials-lambda.md)

# Carica le credenziali in Node.js dai ruoli IAM per Amazon EC2
<a name="loading-node-credentials-iam"></a>

Se esegui l'applicazione Node.js su un'istanza Amazon EC2, puoi sfruttare i ruoli IAM per Amazon EC2 per fornire automaticamente le credenziali all'istanza. Se configuri l'istanza per utilizzare i ruoli IAM, l'SDK seleziona automaticamente le credenziali IAM per l'applicazione, eliminando la necessità di fornire manualmente le credenziali.

Per ulteriori informazioni sull'aggiunta di ruoli IAM a un'istanza Amazon EC2, consulta [Ruoli IAM per Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html).

# Caricare le credenziali per una funzione Lambda di Node.js
<a name="loading-node-credentials-lambda"></a>

Quando si crea una AWS Lambda funzione, è necessario creare un ruolo IAM speciale con il permesso di eseguire la funzione. Questo ruolo si chiama *ruolo di esecuzione*. Quando configuri una funzione Lambda, devi specificare il ruolo IAM che hai creato come ruolo di esecuzione corrispondente.

Il ruolo di esecuzione fornisce alla funzione Lambda le credenziali necessarie per eseguire e richiamare altri servizi Web. Di conseguenza, non è necessario fornire le credenziali per il codice Node.js scritto all'interno di una funzione Lambda.

*Per ulteriori informazioni sulla creazione di un ruolo di esecuzione Lambda, consulta [Manage permissions: Using an IAM role (execution role)](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role) nella Developer Guide.AWS Lambda *

# Impostare le credenziali in un browser Web
<a name="setting-credentials-browser"></a>

Vi sono diversi modi per fornire le credenziali all'SDK dagli script di browser. Alcuni di questi sono più sicuri e altri offrono più comodità durante lo sviluppo di uno script.

 Ecco i modi in cui puoi fornire le tue credenziali, in ordine di raccomandazione:

1. Utilizzo di Amazon Cognito Identity per autenticare gli utenti e fornire credenziali

1. Utilizzo delle identità della federazione delle identità Web

**avvertimento**  
Non è consigliabile codificare le AWS credenziali negli script. Effettuare l'hard coding delle credenziali pone un rischio di esposizione dell'ID chiave di accesso e della chiave di accesso segreta.

**Topics**
+ [Usa Amazon Cognito Identity per autenticare gli utenti](loading-browser-credentials-cognito.md)

# Usa Amazon Cognito Identity per autenticare gli utenti
<a name="loading-browser-credentials-cognito"></a>

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
<a name="browser-cognito-configuration"></a>

Se non ne hai ancora creato uno, crea un pool di identità da utilizzare con gli script del browser nella console [Amazon Cognito](https://console.aws.amazon.com/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à](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-identity-pool.html) 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, sostituiscilo *AWS\$1REGION* con la regione e *IDENTITY\$1POOL\$1ID* 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
<a name="browser-switching-unauthenticated-users"></a>

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
<a name="browser-initially-unauthenticated-user"></a>

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 per 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
<a name="switch-to-authenticated"></a>

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