0

Comment authentifier l'utilisateur SANS pool d'identités/IdentityPoolId, uniquement avec les informations d'identification du pool d'utilisateurs? https://github.com/aws/amazon-cognito-identity-jsAuthentifier l'utilisateur avec les informations d'identification du pool d'utilisateurs Cognito

Exemple 4 lien ci-dessus fonctionne uniquement pour/avec piscine d'identité, quand je l'appelle par exemple la méthode

cognitoUser.changePassword('oldPassword', 'newPassword', function(err, result) {} 

retrun me erreur de CognitoUser.js, chaîne 602-604

if (!(this.signInUserSession != null && this.signInUserSession.isValid())) { 
     return callback(new Error('User is not authenticated'), null); 
    } 

Mais quand je l'appelle

cognitoUser.getSession(function(err, session) {if (err) { 
       alert(err); 
       return; 
      } 
      console.log('session validity: ' + session.isValid()); 

Ça me donne des jetons de session.

Comment je suis en train d'authentifier l'utilisateur:

const logins = {}; 
logins['cognito-idp.' + environment.region + '.amazonaws.com/' + environment.UserPoolId] = session.getIdToken().getJwtToken(); 
// Add the User's Id Token to the Cognito credentials login map. 
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    Logins: logins 
}); 

Cela me donne erreur de

Argument of type '{ Logins: {}; }' is not assignable to parameter of type 'CognitoIdentityOptions'. 

Ce que je suis en train de réaliser:

1) Comment comprendre que Cognito utilisateur userpool authentifié sans pool d'identités?

2) Comment authentifier l'utilisateur?

3) Objet CognitoUser ont 2 IMMEUBLES:

  • session
  • signInUserSession

Que sont-ils? Comment les utiliser correctement?

P.S. Lorsque j'utilise comme ça, tout fonctionne bien, mais je dois y parvenir sans pool d'identités

const creds = new AWS.CognitoIdentityCredentials({ 
IdentityPoolId: environment.IdentityPoolId, // your identity pool id here 
Logins: { 
// Change the key below according to the specific region your user pool is in. 
[`cognito-idp.${environment.region}.amazonaws.com/${environment.UserPoolId}`]: session.getIdToken().getJwtToken()}}, 
{ 
region: environment.region 
}); 
AWS.config.credentials = creds; 

Répondre

0

Qu'est-ce que vous essayez d'atteindre en premier lieu? Pool d'identités, les ID de pool d'identité sont utilisés dans le contexte des identités fédérées Cognito. Cognito Federated Identities est utilisé pour la vente des informations d'identification AWS en fédérant avec différents fournisseurs d'identité tels que Facebook, Google ou les pools d'utilisateurs Cognito.

Le SDK que vous avez désigné est le SDK pour les pools d'utilisateurs Cognito. Les pools d'utilisateurs peuvent être considérés comme un répertoire de données utilisateur pouvant être utilisées pour l'authentification et constituent un fournisseur d'identité pour Cognito Federated Identities.

La méthode que vous appelez changePassword, qui est une méthode authentifiée dans le contexte des pools d'utilisateurs (l'utilisateur doit être authentifié). GetSession récupère simplement l'utilisateur actuel du stockage local. Quel est exactement votre cas d'utilisation, qu'essayez-vous d'accomplir?

+0

merci pour l'explication, question mise à jour, getSession -> donnez-moi la session jetons idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken) getCurrentUser() - me donner utilisateur de localStorage –

0

Je pense que pour votre carte Logins, vous avez une carte qui contient un tableau alors que l'exemple a juste une carte comme ci-dessous.

  Logins : { 
       // Change the key below according to the specific region your user pool is in. 
       'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>' : result.getIdToken().getJwtToken() 
      } 
+0

aucun problème non ce –