Kha*_*led 3 rest json web spring-boot amazon-cognito
我正在尝试为 Cognito 实现一个 Spring Boot 后端,我设法创建一个并执行登录,登录后我需要输入新密码才能更改默认密码,所以我已经提交了我的请求,但出现了异常说:
Invalid attributes given, address is missing.
Run Code Online (Sandbox Code Playgroud)
我尝试将地址作为字符串和 json 对象发送,但发生了相同的异常。
我已经检查了我的认知池中的读写权限,它们必须是可写的!
那么关于这个问题有什么建议吗?
AWS cognito 池地址属性无法作为请求中的对象或字符串发送,它始终返回以下异常:
Invalid attributes given, address is missing (Service: AWSCognitoIdentityProvider; Status Code: 400; Error Code: InvalidParameterException; Request ID: 638dd0e5-2d76-11e9-839d-2b2efb147c0b)
Run Code Online (Sandbox Code Playgroud)
第一次尝试是发送与地址无关的请求,它返回相同的异常,然后我再次将其添加为字符串和相同的异常,然后我尝试将其作为对象发送,并且相同发生了。
关于如何发送属性有什么建议吗?
这是我的实现方式:
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);
Run Code Online (Sandbox Code Playgroud)
这是我要发送的请求:
{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,}
Run Code Online (Sandbox Code Playgroud)
看起来在您的用户池的设置中,您也将“地址”作为用户的必需属性。
因此,在这种情况下,您还必须在哈希图中传递该参数,如下所示:
challengeResponses.put('userAttributes.address', passwordRequest.getAddress())
Run Code Online (Sandbox Code Playgroud)
或类似的东西。