in services/shared-services/tenant-registration-service/src/main/java/com/amazonaws/saas/eks/TenantRegistrationService.java [393:444]
protected TenantDetails createUserPool(TenantDetails tenant) {
AWSCognitoIdentityProvider cognitoIdentityProvider = AWSCognitoIdentityProviderClientBuilder.defaultClient();
CreateUserPoolRequest createUserPoolRequest = new CreateUserPoolRequest();
createUserPoolRequest.setPoolName(tenant.getTenantId() + "-UserPool");
AdminCreateUserConfigType adminCreateUserConfigType = new AdminCreateUserConfigType();
adminCreateUserConfigType.setAllowAdminCreateUserOnly(true);
createUserPoolRequest.setAdminCreateUserConfig(adminCreateUserConfigType);
List<String> usernameAttributes = new ArrayList<String>();
usernameAttributes.add("email");
createUserPoolRequest.setUsernameAttributes(usernameAttributes);
List<SchemaAttributeType> schema = new ArrayList<SchemaAttributeType>();
SchemaAttributeType satEmail = new SchemaAttributeType();
satEmail.setName("email");
satEmail.setRequired(true);
satEmail.setAttributeDataType("String");
satEmail.setMutable(true);
schema.add(satEmail);
SchemaAttributeType satTenantId = new SchemaAttributeType();
satTenantId.setName("tenant-id");
satTenantId.setRequired(false);
satTenantId.setAttributeDataType("String");
satTenantId.setMutable(false);
schema.add(satTenantId);
SchemaAttributeType satMuttableAttr = new SchemaAttributeType();
satMuttableAttr.setName("muttable-attr");
satMuttableAttr.setRequired(false);
satMuttableAttr.setAttributeDataType("String");
satMuttableAttr.setMutable(false);
schema.add(satMuttableAttr);
createUserPoolRequest.setSchema(schema);
CreateUserPoolResult result = cognitoIdentityProvider.createUserPool(createUserPoolRequest);
String userPoolId = result.getUserPool().getId();
String authServer = "https://cognito-idp." + getRegion(userPoolId) + ".amazonaws.com/" + userPoolId;
tenant.setUserPoolId(userPoolId);
tenant.setAuthServer(authServer);
LoggingManager.logInfo(tenant.getTenantId(), "Created user pool with id: " + userPoolId);
LoggingManager.logInfo(tenant.getTenantId(), "Created Auth Server: " + authServer);
LoggingManager.logInfo(tenant.getTenantId(), "Create User Pool Successful.");
return tenant;
}