

 Le [guide de référence de l'API AWS SDK pour JavaScript V3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) décrit en détail toutes les opérations de l'API pour la AWS SDK pour JavaScript version 3 (V3). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Définir les informations d'identification
<a name="setting-credentials"></a>

AWS utilise des informations d'identification pour identifier qui appelle les services et si l'accès aux ressources demandées est autorisé. 

Qu'il soit exécuté dans un navigateur Web ou sur un serveur Node.js, votre JavaScript code doit obtenir des informations d'identification valides avant de pouvoir accéder aux services via l'API. Les informations d'identification peuvent être définies par service, en les transmettant directement à un objet de service.

Il existe plusieurs manières de définir des informations d'identification qui diffèrent entre Node.js et JavaScript dans les navigateurs Web. Les rubriques de cette section décrivent comment définir les informations d'identification dans Node.js ou des navigateurs web. Dans chaque cas, les options sont présentées dans l'ordre recommandé.

## Bonnes pratiques en matière d'informations d'identification
<a name="credentials-best-practices"></a>

Si les informations d'identification sont correctement définies, le script de votre application ou navigateur peut accéder aux services et ressources nécessaires tout en réduisant l'exposition aux problèmes de sécurité qui peuvent avoir un impact sur les applications stratégiques ou compromettre les données sensibles.

Lors de la définition des informations d'identification, il convient de toujours accorder le moindre privilège requis pour la tâche. Il est plus sûr d'octroyer les autorisations minimales pour vos ressources et d'en ajouter d'autres au besoin, plutôt que d'accorder des autorisations qui dépassent le moindre privilège et, par conséquent, d'avoir à résoudre les problèmes de sécurité que vous pourriez découvrir par la suite. Par exemple, à moins que vous n'ayez besoin de lire et d'écrire des ressources individuelles, telles que des objets dans un compartiment Amazon S3 ou une table DynamoDB, définissez ces autorisations en lecture seule.

Pour plus d'informations sur l'octroi du moindre privilège, consultez la section [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) de la rubrique Bonnes pratiques du *Guide de l'utilisateur IAM*.

**Topics**
+ [Bonnes pratiques en matière d'informations d'identification](#credentials-best-practices)
+ [Définissez les informations d'identification dans Node.js](setting-credentials-node.md)
+ [Définir les informations d'identification dans un navigateur Web](setting-credentials-browser.md)

# Définissez les informations d'identification dans Node.js
<a name="setting-credentials-node"></a>

Nous recommandons aux nouveaux utilisateurs qui se développent localement et qui n'ont pas reçu de méthode d'authentification de la part de leur employeur de les configurer AWS IAM Identity Center. Pour de plus amples informations, veuillez consulter [Authentification du SDK avec AWS](getting-your-credentials.md).

Dans Node.js, il existe plusieurs façons de fournir vos informations d'identification au kit SDK. Certaines sont plus sécurisées, tandis que d'autres s'avèrent plus pratiques lors du développement d'une application. Lorsque vous obtenez des informations d'identification dans Node.js, veillez à ne pas vous fier à plusieurs sources, telles qu'une variable d'environnement et un fichier JSON que vous chargez. Vous pourriez en effet modifier les autorisations sous lesquelles s'exécute votre code sans vous en rendre compte.

AWS SDK pour JavaScript La version 3 fournit une chaîne de fournisseurs d'informations d'identification par défaut dans Node.js. Vous n'êtes donc pas obligé de fournir un fournisseur d'informations d'identification de manière explicite. La [chaîne de fournisseurs d'informations d'identification](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain) par défaut tente de résoudre les informations d'identification provenant de différentes sources selon une priorité donnée, jusqu'à ce qu'une information d'identification soit renvoyée par l'une des sources. [Vous trouverez la chaîne de fournisseurs d'informations d'identification pour le SDK pour JavaScript V3 ici.](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromnodeproviderchain)

## Chaîne de fournisseurs d'identifiants
<a name="credchain"></a>

Tous SDKs ont une série de lieux (ou de sources) qu'ils vérifient afin d'obtenir des informations d'identification valides à utiliser pour faire une demande à un Service AWS. Une fois les informations d’identification valides trouvées, la recherche s’arrête. Cette recherche systématique est appelée chaîne de fournisseurs d'informations d'identification par défaut. 

Pour chaque étape de la chaîne, il existe différentes manières de définir les valeurs. La définition des valeurs directement dans le code est toujours prioritaire, suivie de la définition en tant que variables d'environnement, puis dans le AWS `config` fichier partagé. Pour plus d'informations, consultez la section [Priorité des paramètres](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#precedenceOfSettings) dans le *Guide de référence des outils AWS SDKs et des outils*. 

Le *guide de référence AWS SDKs and Tools* contient des informations sur les paramètres de configuration du SDK utilisés par tous AWS SDKs et les AWS CLI. Pour en savoir plus sur la configuration du SDK via le AWS `config` fichier partagé, consultez la section [Fichiers de configuration et d'informations d'identification partagés](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html). Pour en savoir plus sur la configuration du SDK en définissant des variables d'environnement, consultez la section Prise en [charge des variables d'environnement](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html).

Pour s'authentifier AWS, AWS SDK pour JavaScript vérifie les fournisseurs d'informations d'identification dans l'ordre indiqué dans le tableau suivant.

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

Si vous avez suivi l'approche recommandée pour les nouveaux utilisateurs pour démarrer, vous avez configuré AWS IAM Identity Center l'authentification au cours [Authentification du SDK avec AWS](getting-your-credentials.md) de la rubrique Mise en route. D'autres méthodes d'authentification sont utiles dans différentes situations. Pour éviter les risques de sécurité, nous vous recommandons de toujours utiliser des informations d'identification à court terme. Pour les autres procédures relatives aux méthodes d'[authentification, voir Authentification et accès](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) dans le *guide de référence des outils AWS SDKs et*.

Les rubriques de cette section décrivent comment charger les informations d'identification dans Node.js.

**Topics**
+ [Chaîne de fournisseurs d'identifiants](#credchain)
+ [Charger les informations d'identification dans le fichier Node.js à partir des rôles IAM pour Amazon EC2](loading-node-credentials-iam.md)
+ [Charger les informations d'identification pour une fonction Lambda Node.js](loading-node-credentials-lambda.md)

# Charger les informations d'identification dans le fichier Node.js à partir des rôles IAM pour Amazon EC2
<a name="loading-node-credentials-iam"></a>

Si vous exécutez votre application Node.js sur une instance Amazon EC2, vous pouvez tirer parti des rôles IAM pour qu'Amazon EC2 fournisse automatiquement des informations d'identification à l'instance. Si vous configurez votre instance pour utiliser des rôles IAM, le SDK sélectionne automatiquement les informations d'identification IAM pour votre application, éliminant ainsi le besoin de fournir manuellement des informations d'identification.

Pour plus d'informations sur l'ajout de rôles IAM à une instance Amazon EC2, [consultez la section Rôles IAM pour Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) EC2.

# Charger les informations d'identification pour une fonction Lambda Node.js
<a name="loading-node-credentials-lambda"></a>

Lorsque vous créez une AWS Lambda fonction, vous devez créer un rôle IAM spécial autorisé à exécuter la fonction. Il s'agit du *rôle d'exécution*. Lorsque vous configurez une fonction Lambda, vous devez spécifier le rôle IAM que vous avez créé comme rôle d'exécution correspondant.

Le rôle d'exécution fournit à la fonction Lambda les informations d'identification dont elle a besoin pour s'exécuter et appeler d'autres services Web. Par conséquent, il n'est pas nécessaire de fournir des informations d'identification pour le code Node.js que vous écrivez dans une fonction Lambda.

*Pour plus d'informations sur la création d'un rôle d'exécution Lambda, voir [Gérer les autorisations : utilisation d'un rôle IAM (rôle d'exécution)](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role) dans le Guide du AWS Lambda développeur.*

# Définir les informations d'identification dans un navigateur Web
<a name="setting-credentials-browser"></a>

Il existe plusieurs façons de fournir vos informations d'identification au kit SDK à partir des scripts de navigateur. Certaines sont plus sécurisées, tandis que d'autres s'avèrent plus pratiques lors du développement d'un script.

 Voici comment vous pouvez fournir vos informations d'identification, par ordre de recommandation :

1. Utilisation d'Amazon Cognito Identity pour authentifier les utilisateurs et fournir des informations d'identification

1. Utilisation de l'identité web fédérée

**Avertissement**  
Nous vous déconseillons de coder en dur vos AWS informations d'identification dans vos scripts. En effet, le codage en dur des informations d'identification risque d'exposer votre ID de clé d'accès et votre clé d'accès secrète.

**Topics**
+ [Utiliser Amazon Cognito Identity pour authentifier les utilisateurs](loading-browser-credentials-cognito.md)

# Utiliser Amazon Cognito Identity pour authentifier les utilisateurs
<a name="loading-browser-credentials-cognito"></a>

La méthode recommandée pour obtenir des AWS informations d'identification pour les scripts de votre navigateur consiste à utiliser le client d'identification Amazon Cognito Identity. `CognitoIdentityClient` Amazon Cognito permet l'authentification des utilisateurs par le biais de fournisseurs d'identité tiers.

Pour utiliser Amazon Cognito Identity, vous devez d'abord créer un pool d'identités dans la console Amazon Cognito. Un groupe d'identités représente le groupe des identités fournies par votre application à vos utilisateurs. Les identités attribuées aux utilisateurs identifient de manière unique chaque compte utilisateur. Les identités Amazon Cognito ne sont pas des informations d'identification. Ils sont échangés contre des informations d'identification à l'aide du support de fédération d'identité Web dans AWS Security Token Service (AWS STS).

Amazon Cognito vous aide à gérer l'abstraction des identités entre plusieurs fournisseurs d'identité. L'identité chargée est ensuite échangée contre les informations d'identification dans AWS STS.

## Configuration de l'objet d'identification Amazon Cognito Identity
<a name="browser-cognito-configuration"></a>

Si vous n'en avez pas encore créé un, créez un pool d'identités à utiliser avec les scripts de votre navigateur dans la [console Amazon Cognito](https://console.aws.amazon.com/cognito) avant de configurer votre client Amazon Cognito. Créez et associez des rôles IAM authentifiés et non authentifiés pour votre pool d'identités. Pour plus d'informations, consultez [Tutoriel : Création d'un pool d'identités](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-identity-pool.html) dans le manuel *Amazon Cognito Developer Guide*.

L'identité des utilisateurs non authentifiés n'est pas vérifiée, ce rôle est donc approprié pour les utilisateurs invités de votre application ou dans les cas où le fait que l'identité des utilisateurs soit vérifiée n'a pas d'importance. Les utilisateurs authentifiés se connectent à votre application via un fournisseur d'identité tiers qui vérifie leur identité. Assurez-vous de définir de façon appropriée les autorisations des ressources afin de ne pas y accorder l'accès aux utilisateurs non authentifiés.

Après avoir configuré un pool d'identités, utilisez la `fromCognitoIdentityPool` méthode du `@aws-sdk/credential-providers` pour récupérer les informations d'identification du pool d'identités. Dans l'exemple suivant de création d'un client Amazon S3, remplacez-le *AWS\$1REGION* par la région et *IDENTITY\$1POOL\$1ID* par l'ID du pool d'identités.

```
// 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 propriété facultative `logins` est un mappage de noms de fournisseur d'identité avec les jetons d'identité de ces fournisseurs. La façon dont vous obtenez le jeton de la part de votre fournisseur d'identité dépend du fournisseur que vous utilisez. Par exemple, si vous utilisez un groupe d'utilisateurs Amazon Cognito comme fournisseur d'authentification, vous pouvez utiliser une méthode similaire à celle ci-dessous.

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

## Passer d'utilisateurs non authentifiés à des utilisateurs authentifiés
<a name="browser-switching-unauthenticated-users"></a>

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

### Utilisateur initialement non authentifié
<a name="browser-initially-unauthenticated-user"></a>

Les utilisateurs commencent généralement par le rôle non authentifié, pour lequel vous définissez la propriété des informations d'identification de votre objet de configuration sans propriété `logins`. Dans ce cas, vos informations d'identification par défaut peuvent ressembler à ce qui suit :

```
// Import the required AWS SDK pour 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.
});
```

### Basculement vers un utilisateur authentifié
<a name="switch-to-authenticated"></a>

Lorsqu'un utilisateur non authentifié se connecte à un fournisseur d'identité et que vous disposez d'un jeton, vous pouvez passer du statut d'utilisateur non authentifié à celui d'utilisateur authentifié en appelant une fonction personnalisée qui met à jour l'objet d'identification et ajoute le jeton. `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;
}
```