AWS Cognito NEW_PASSWORD_REQUIRED需要地址的挑战,但它似乎不接受任何形式的地址类型



我试图为cognito实现一个春季启动后端,我设法创建了一个并执行登录,登录后,我需要使用新密码来更改默认密码,所以我提交了请求,但收到了一个异常,说:

Invalid attributes given, address is missing.

我曾尝试将地址作为字符串和json对象发送,但出现了相同的异常。

我已经检查了我的认知池中的读写权限,它们必须是可写的!

那么,对这个问题有什么建议吗?

Aws cognito池地址属性既不能作为对象也不能作为请求中的字符串发送,它总是返回以下异常:

Invalid attributes given, address is missing (Service: AWSCognitoIdentityProvider; Status Code: 400; Error Code: InvalidParameterException; Request ID: 638dd0e5-2d76-11e9-839d-2b2efb147c0b)

第一次尝试是在与地址无关的情况下发送请求,它返回了相同的异常,然后我将其作为字符串添加,并再次添加相同的异常。然后我尝试将其作为对象发送,同样的情况也发生了。

关于如何发送属性,有什么建议吗?

以下是我如何实现它:

Map<String, String> challengeResponses = new HashMap<String, String>();
challengeResponses.put(USERNAME, passwordRequest.getUserName());
challengeResponses.put(PASSWORD, passwordRequest.getOldPassword());
challengeResponses.put(NEW_PASSWORD, passwordRequest.getNewPassword());
challengeResponses.put("ADDRESS", "test");
AdminRespondToAuthChallengeRequest changeRequest = new AdminRespondToAuthChallengeRequest()
.withChallengeName(ChallengeNameType.NEW_PASSWORD_REQUIRED).withChallengeResponses(challengeResponses).withClientId(clientID).withUserPoolId(poolID)
.withSession(sessionString);
System.out.println(changeRequest.toString());
AdminRespondToAuthChallengeResult challengeResponse = mIdentityProvider.adminRespondToAuthChallenge(changeRequest);

这是我发送的请求:

{UserPoolId: eu-central-1_RZxg4jT2t,ClientId: 2cdjo5ljk130db1mltjnmv128p,ChallengeName: NEW_PASSWORD_REQUIRED,ChallengeResponses: {address=test, PASSWORD=test!, NEW_PASSWORD=test, USERNAME=test},Session: 144WvRkekrIojcPQGDBBu3XsadMBauwQcAJ3M3JVMxD-CY0rCizK1g4RnNuaNN4b1EJMUlrvSnyd21pAP3zFkIlEFXse1MlOLWaGUQIaIygTzX33Y2no0cmfK2-h88yjiKN5-MQZaK6tmvszCuATmOQCR_OK1qLIDYlp1kKGPM_EpBT-br-e5DL9SEF8XIY5wLWGHYWxo4BUuJAIZpTJ8PpD3ROa46ac5w79lhHIK1QZj13f4G84eVz4X8nwiHgLEGgbUOOpoDBC85KSQan8lb-vfPsHEvpoStFy7_0zgRmJ910DubJXJaiS2IjutBr5txDDaSnTl9Zt4G-_NP6_8E0c5JnXIXZymR9nSSYNP7seHXC7HLtFX6Tbu8XWJlLCtKVc8gXN6j0XTzB3hfu-0zGFc3tJ1sQ6iQtLFupuD9C8HYWP6KH_9v2PlUrGc01uU_OOQx5lLaHbNrOvb4evlx9fovM0B6FuPLfUgNmc8aKGZ0Rw55t-aExpJJ_AY2E42C_RWXVX5YUFZTaRi8OvskQLLlyVt0uWV8w1HRc0uGJc5drTK4c7U7TDCaD2-tMiA5TwlpsdCAxv-kRKfMpXN2D6rzzB9An6tis3n9olV5W0yK-KKB1ietx5C-l-HewPBVz9_g-1ggBvwh3qVYjKe1UHcpd5c8SM8kjcwjwy_8fGphYHR4sZBa5zftyT7dYktKzpJsH8HzbZ4Q8WZOKcGqtyeCzkqZuO0LanSL-6yKlGWPEA4tGUhjvT-mWyPEMg576UMPAcWiO6fV-yUVBG5V3OSRpR00NasyFpmTy8U29XI7bfXUMmgY3-6h4nPgaObi25jnmyhDcp2N4MQQl45d0PvmvxIx7huPIzbVC5NNq7tPg6V4H_88cIb81p4gJZ_FITeeSgVWIYRFSoY7vR4DLL9qS3Ea_pAxaENA,}

在用户池的设置中,">地址"似乎也是用户的必需属性。

因此,在这种情况下,您必须在hashmap中也将该参数传递为:

challengeResponses.put('userAttributes.address', passwordRequest.getAddress())

或者类似的东西。

最新更新