【问题标题】:AWS Cognito Identity NotAuthorizedExceptionAWS Cognito 身份 NotAuthorizedException
【发布时间】:2016-10-02 21:31:40
【问题描述】:

我正在使用 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());
      });

上面的代码 sn-p 有什么建议或潜在问题吗?谢谢!

【问题讨论】:

  • 您是否缺少“IdentityPoolId:”我只看到“...”?
  • @error2007s 不,在我的真实代码中我有我的身份池 ID,我只是不想公开显示它。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用 Javascript SDK 创建 Web 应用程序时,您不能使用密钥,因为没有存储位置。这将导致您看到的异常。

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

    【讨论】:

      【解决方案3】:

      对于 JavaScript SDK,Cognito 仍然不支持“Client Secret”。当您创建应用程序客户端时,请务必取消选中“生成密钥”键。 这也是我在使用 Java SDK 时面临的同样问题。

      但这是 AWS Cognito 团队的问题?我们将如何使用生产环境首选的 Client Secret。

      如果有人遇到类似问题,请删除您的客户端应用程序并重新创建客户端应用程序而不生成客户端密码。我们仍然期待专家开发人员回答,我们将如何使用客户端密码?

      【讨论】:

      • 你没有。客户端机密用于服务器到服务器的授权。它们被用于跨后端系统的服务帐户样式授权,而不是用户名和密码。在客户端移动应用程序或 Web 应用程序中不使用或放置客户端机密,以免被劫持,这是一项行业标准。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2014-10-04
        • 2018-01-29
        • 1970-01-01
        • 1970-01-01
        • 2016-06-25
        • 1970-01-01
        • 2017-01-02
        • 2018-05-22
        • 2016-08-27
        相关资源
        最近更新 更多