Utilisation d'Amazon Cognito Identity pour authentifier les utilisateurs - AWS SDK for JavaScript

Nous avons annoncé la sortie end-of-support de la AWS SDK for JavaScript v2. Nous vous recommandons de migrer vers la AWS SDK for JavaScript version 3. Pour les dates, les détails supplémentaires et les informations sur la façon de migrer, reportez-vous à l'annonce associée.

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.

Utilisation d'Amazon Cognito Identity pour authentifier les utilisateurs

La méthode recommandée pour obtenirAWSles informations d'identification des scripts de votre navigateur doivent utiliser l'objet Amazon Cognito Identity Credentity,AWS.CognitoIdentityCredentials. Amazon Cognito permet l'authentification des utilisateurs via des 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 façon unique chaque compte utilisateur. Les identités Amazon Cognito ne sont pas des informations d'identification. Elles sont échangées contre des informations d'identification grâce à la prise en charge de la fédération des identités web dans AWS Security Token Service (AWS STS).

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

Configuration de l'objet Amazon Cognito Informations d'identification

Si ce n'est pas déjà fait, créez un groupe d'identités à utiliser avec les scripts de votre navigateur dans leConsole Amazon Cognitoavant de configurerAWS.CognitoIdentityCredentials. Créez et associez les deux rôles IAM authentifiés et non authentifiés pour votre groupe d'identités.

L'identité des utilisateurs non authentifiés n'est pas vérifiée. Ce rôle convient donc pour les utilisateurs invités de votre application ou dans les cas où il n'est pas important que les identités des utilisateurs soient vérifiées. 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.

Une fois un groupe d'identités configuré avec les fournisseurs d'identité attachés, vous pouvez utiliser AWS.CognitoIdentityCredentials pour authentifier les utilisateurs. Pour configurer les informations d'identification de votre application afin d'utiliser AWS.CognitoIdentityCredentials, définissez la propriété credentials d'une configuration AWS.Config ou d'une configuration par service. L'exemple suivant utilise AWS.Config :

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { // optional tokens, used for authenticated login 'graph.facebook.com': 'FBTOKEN', 'www.amazon.com': 'AMAZONTOKEN', 'accounts.google.com': 'GOOGLETOKEN' } });

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 Facebook est l'un de vos fournisseurs d'identité, vous pouvez utiliser la fonction FB.login du kit SDK Facebook pour obtenir un jeton de fournisseur d'identité :

FB.login(function (response) { if (response.authResponse) { // logged in AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); s3 = new AWS.S3; // we can now create our service object console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } });

Permutation entre les utilisateurs non authentifiés et les utilisateurs authentifiés

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é comporte une identité unique dans Amazon Cognito, même s'il n'a pas été individuellement connecté et authentifié.

Utilisateur initialement non authentifié

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, votre configuration par défaut peut se présenter comme suit :

// set the default config object var creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030' }); AWS.config.credentials = creds;

Basculement vers un utilisateur authentifié

Lorsqu'un utilisateur non authentifié se connecte à un fournisseur d'identité et que vous avez un jeton, vous pouvez changer l'utilisateur non authentifié en utilisateur authentifié en appelant une fonction personnalisée qui met à jour l'objet des informations 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; }

Vous pouvez également créer un objet CognitoIdentityCredentials. Dans ce cas, vous devez réinitialiser les propriétés des informations d'identification des objets de service existants que vous avez créés. Les objets de service lisent dans la configuration globale uniquement à l'initialisation de l'objet.

Pour plus d'informations sur leCognitoIdentityCredentialsobjet, voirAWS.CognitoIdentityCredentialsdans leAWS SDK for JavaScriptRéférence d'API.