AWS Cognito更改要禁用的用户状态

时间:2018-03-01 09:00:59

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

我想使用代码更改用户状态。

我尝试了很多代码,但没有任何对我有用。任何人都可以提供完整的工作示例。有一段时间我收到此错误CognitoIdentityCredentials无权执行:cognito-idp:资源上的AdminDisableUser

rcview1.setAdapter(cmpadapter1);
rcview1.setLayoutManager(new LinearLayoutManager(this));

3 个答案:

答案 0 :(得分:0)

参数和调用似乎没问题。该错误表示您的lambda函数(我假设此代码段来自您的lambda函数)的角色没有执行 adminDisableUser 的权限。

您需要找到lambda函数的IAM角色,并附加允许该操作的策略。例如:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAdminDisableUser",
            "Effect": "Allow",
            "Action": "cognito-idp:AdminDisableUser",
            "Resource": "*"
        }
    ]
}

您可能还希望指定某些资源,以禁止对每个用户池执行此操作。

答案 1 :(得分:0)

如果您的目标是启用/禁用以管理员身份登录的Cognito用户,请忽略此操作。 请注意,管理员启用/禁用启用/禁用了用户作为管理员。 不禁用用户帐户(登录等),这可能是您收到错误的地方。

答案 2 :(得分:0)

我有这个功能可以在一个应用程序中启用/禁用用户,这里是我如何实现这个功能

  1. 授予 lambda 执行启用/禁用所需的权限
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "cognito-idp:AdminEnableUser",
                "cognito-idp:AdminDisableUser"
            ],
            "Resource": [
                "arn:aws:cognito-idp:<region>:<account-id>:userpool/<user-pool-id>",
                "arn:aws:cognito-idp:<region>:<account-id>:userpool/<user-pool-id>"
            ]
        }
    ]
}
  1. 初始化 AWS 开发工具包
AWS.config.update({
  region: "us-east-1",
});
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({
  apiVersion: "2016-04-18",
});
const UserPoolId = "<pool-id>";

  1. 创建了一种方法来处理启用/禁用
const accountActions = (action, username) => {
  return new Promise((res, rej) => {
    const params = {
      UserPoolId /* required */,
      Username: username /* required */,
    };
    if (action == "disable") {
      cognitoidentityserviceprovider.adminDisableUser(params, function(err,data) {
        if (err) {
          rej(err);
        } else {
          res(data);
        }
      });
    } else {
      cognitoidentityserviceprovider.adminEnableUser(params,function(err,data) {
        if (err) {
          rej(err);
        } else {
          res(data);
        }
      });
    }
  });
};