我的Java应用程序正在使用AWS Cognito用户池。它使用Amazon SDK为用户签名.EG:
Map<String, String> authParams = new HashMap<>();
authParams.put("USERNAME", email);
authParams.put("PASSWORD", StringUtils.SPACE);
AdminInitiateAuthRequest authRequest = new AdminInitiateAuthRequest()
.withAuthFlow(AuthFlowType.ADMIN_NO_SRP_AUTH)
.withAuthParameters(authParams)
.withClientId(clientId)
.withUserPoolId(poolId);
AdminInitiateAuthResult result = cognitoClient.adminInitiateAuth(authRequest);
如果没有AWS访问凭据,上述代码将无效。为什么呢?我只想访问AWS Cognito用户池。我是否需要将AWS凭据传递到Java应用程序中?尝试避免使用AWS凭证版本或手动配置它们(或设置一些自动配置机制)。
答案 0 :(得分:4)
您正在使用adminInitiateAuth,这是服务器端身份验证流程。这是您的凭证后端将对用户进行身份验证的方式。
对于客户端身份验证流程,您应该使用initiateAuth,而不是adminInitiateAuth。
请参阅开发者指南中的User Pool Authentication Flow。