以管理员身份删除Cognito用户

时间:2017-12-09 03:48:13

标签: java amazon-web-services aws-lambda

String userPoolId="testPoolID";
String username= "testuser";
String amazonAWSAccessKey="test access key";
String amazonAWSSecretKey="test secret key";
AdminDeleteUserRequest req = new AdminDeleteUserRequest();
req.setUsername(username);
req.setUserPoolId(userPoolId);
AWSCredentials credentials = new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey);   
AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials); 
credentialsProvider.getCredentials();
req.setRequestCredentialsProvider(credentialsProvider); 
AWSCognitoIdentityProvider provider = new AWSCognitoIdentityProviderClient();
provider.adminDeleteUser(req); 

这是从cognito用户池中删除用户的代码段。如何在不使用java提供凭据的情况下从cogito中删除用户?

2 个答案:

答案 0 :(得分:0)

  • 这样做的一种方法是将此代码放在lambda& amp;通过API网关公开它。为管理员创建另一个用户池(免费!)&为您的API启用cognito userpool授权程序。现在,在您的代码中,显示一个登录屏幕(使用Cognito的内置UI),获取ID令牌并在调用API时使用此ID令牌。通过这种方式,您的代码将动态获取令牌和所以没有硬编码凭据。
  • 另一种方法是使用Cognito Federated Identities,但在这种情况下不需要lambda + API Gateway。再次,为Admins&创建一个用户池。将其添加为Cognito Identity Pool中的Auth Provider。现在,登录Admin userpool,获取Id令牌,在IdentityPool& amp;登录地图中使用此令牌。使用GetCredentialsForIdentity获取临时凭据。只需确保Cognito Identity Pool的Auth角色具有执行用户池操作的相应权限。

答案 1 :(得分:0)

很抱歉,对于其他偶然发现的人可能会有所帮助。 如果您的代码在lambda中,则可以使用以下代码

AWSCognitoIdentityProviderClientBuilder.standard()
    .withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
    .withRegion(region).build();

注意:检查您的lambda执行角色是否有权访问ognito