AWS Cognito Identity NotAuthorizedException

时间:2016-06-02 23:41:54

标签: javascript amazon-web-services amazon-cognito

我正在使用AWS javascript sdk将用户池与我正在构建的Web应用程序集成。用户池已设置完毕,我已按照此处的用法示例进行操作:https://github.com/aws/amazon-cognito-identity-js

我不断收到错误消息: " NotAuthorizedException:无法验证客户端的秘密哈希值(我的应用客户端ID)"

AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: '...' // my identity pool id here
});


AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId: '...' // my identity pool id here
})


var poolData = {
  UserPoolId: '...', // my user pool id here
  ClientId: '...'  // client id here
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);

var userData = {
    Username : 'username',
    Pool : userPool
};

      var attributeList = [];

      var dataEmail = {
          Name : 'email',
          Value : 'email@mydomain.com'
      };
      var dataPhoneNumber = {
          Name : 'phone_number',
          Value : '+15555555555'
      };
      var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail);
      var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber);

      attributeList.push(attributeEmail);
      attributeList.push(attributePhoneNumber);

      userPool.signUp('username', 'password', attributeList, null, function(err, result){
          if (err) {
              alert(err);
              return;
          }
          cognitoUser = result.user;
          console.log('user name is ' + cognitoUser.getUsername());
      });

上面的代码段有任何建议或潜在问题吗?谢谢!

4 个答案:

答案 0 :(得分:7)

对此的解决方案实际上非常简单。您必须删除aws中的应用程序并在没有密钥的情况下重新添加它,以便它可以进行授权。

答案 1 :(得分:2)

使用Javascript SDK创建Web应用程序时,您无法使用密钥,因为无法存储它。这将导致您看到的异常。

正如您所发现的,创建没有密钥的应用程序可以解决问题。

答案 2 :(得分:0)

对于JavaScript SDK,Cognito仍然不支持" Client Secret"。在创建App Client时,请务必取消选中" Generate Secret"键。 这与我在Java SDK中面临的问题相同。

但这是AWS Cognito团队的一个问题?我们将如何使用生产环境首选的客户端密钥。

如果有人遇到类似问题,请立即删除您的客户端应用并重新创建客户端应用,而不会产生客户端密钥。我们仍然希望专家开发人员回答,我们将如何使用客户端秘密?

答案 3 :(得分:0)

就我而言,我在UserPoolId上输入了错误的内容。因此,请再次检查您的凭据。