【问题标题】:IAM Role vs IAM User Can't Call Cognito ListUsersIAM 角色与 IAM 用户无法调用 Cognito ListUsers
【发布时间】:2021-02-12 08:43:09
【问题描述】:

我正在开发一个无服务器项目,当我调用本地并使用我的 ~/.aws/credentials 中对应于具有管理员策略的用户的凭据时,代码可以正确执行而没有任何安全问题。当我使用假定角色运行 lambda 时,它会出现以下错误:

UnrecognizedClientException:请求中包含的安全令牌无效。

如果我硬编码我的管理员用户的凭据并在 lambda 中运行它,它可以正常工作。所以很明显,我的 IAM 角色存在一些问题,当调用 Cognito 到 ListUsers 时,lambda 假设了这些问题。我已经为 IAM 角色提供了管理员策略,但仍然给出了相同的异常,角色与用户之间发生了什么,为什么角色不能调用 cognito ListUsers?

是否需要信任关系?与具有相同访问策略的用户相比,角色需要什么额外的东西吗?这让我发疯了

    var params = {
      UserPoolId: process.env.userPoolId,
      AttributesToGet: [
        'email',
        'sub'
      ],
      Filter : 'email ^= \"' + email + '\"'
    };

    return new Promise((resolve, reject) => {
      AWS.config.update({
        region : process.env.AWS_REGION,
        accessKeyId : process.env.AWS_ACCESS_KEY_ID,
        secretAccessKey : process.env.AWS_SECRET_ACCESS_KEY
      });
      var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
      cognitoidentityserviceprovider.listUsers(params, (err, data) => {
        if (err) {
          console.error(err);
          reject(err);
        } else {
          var users = [];
          for (const cognitoUser of data.Users) {
            var user = {};
            for (const attribute of cognitoUser.Attributes) {
              switch(attribute.Name) {
                case 'sub':
                  user.id = attribute.Value;
                break;
                case 'email':
                  user.email = attribute.Value;
                break;
                default:
              }
            }
            users.push(user);
          }
          resolve(users);
        }
      });
    });

【问题讨论】:

    标签: aws-lambda amazon-cognito amazon-iam serverless-framework


    【解决方案1】:

    好的,所以当您使用 STS Assume Role 时,SessionToken 不是可选的,需要包含在内。这就是答案。

    【讨论】:

      猜你喜欢
      • 2016-07-04
      • 2019-05-10
      • 2020-11-08
      • 2019-09-10
      • 2017-04-21
      • 2016-11-02
      • 2018-02-22
      • 2019-07-08
      • 2016-08-27
      相关资源
      最近更新 更多