在AWS Cognito中,API用户必须经过确认过程才能访问受保护的资源。下面是一个基本的确认过程示例,步骤如下:
AWSCognitoIdentityProvider cognitoIdentityProvider = AWSCognitoIdentityProviderClientBuilder.defaultClient();
CreateUserPoolRequest createUserPoolRequest = new CreateUserPoolRequest()
.withPoolName(userPoolName)
.withAdminCreateUserConfig(new AdminCreateUserConfig()
.withAllowAdminCreateUserOnly(true));
CreateUserPoolResult poolResult = cognitoIdentityProvider.createUserPool(createUserPoolRequest);
String userPoolId = poolResult.getUserPool().getId();
CreateUserPoolClientRequest userPoolClientRequest = new CreateUserPoolClientRequest()
.withUserPoolId(userPoolId)
.withClientName(clientName)
.withGenerateSecret(false)
.withRefreshTokenValidity(REFRESH_TOKEN_VALIDITY_SECONDS)
.withAccessTokenValidity(ACCESS_TOKEN_VALIDITY_SECONDS)
.withIdTokenValidity(ID_TOKEN_VALIDITY_SECONDS);
CreateUserPoolClientResult createUserPoolClientResult = cognitoIdentityProvider.createUserPoolClient(userPoolClientRequest);
String userPoolClientId = createUserPoolClientResult.getUserPoolClient().getClientId();
Map userAttributes = new HashMap<>();
userAttributes.put("email", userEmail);
userAttributes.put("email_verified", "true");
AdminCreateUserRequest adminCreateUserRequest = new AdminCreateUserRequest()
.withUserPoolId(userPoolId)
.withUsername(username)
.withUserAttributes(
new AttributeType()
.withName("email_verified")
.withValue("true"),
new AttributeType()
.withName("email")
.withValue(userEmail))
.withTemporaryPassword(temporaryPassword)
.withMessageAction("SUPPRESS");
AdminCreateUserResult adminCreateUserResult = cognitoIdentityProvider.adminCreateUser(adminCreateUserRequest);
String userId = adminCreateUserResult.getUser().getUsername();