我使用 AWS 控制台在 AWS Cognito 中创建了一个新用户,它当前处于“强制更改密码”状态。
我想立即触发“忘记密码”流程,而无需插入用户名和密码。所以,我执行了这个 Postman 请求:
curl --location 'https://cognito-idp.eu-central-1.amazonaws.com/' \
--header 'X-Amz-Target: AWSCognitoIdentityProviderService.ForgotPassword' \
--header 'Content-Type: application/x-amz-json-1.1' \
--data '{
"ClientId":"aaaaaaaaabbbbbbbbcccccccdd",
"Username":"brandnewuser"
}'
然而,我收到了这样的回复:
{
"CodeDeliveryDetails": {
"AttributeName": "email",
"DeliveryMedium": "EMAIL",
"Destination": "t***@y***"
}
}
问题是(被屏蔽的)电子邮件不正确;它应该类似于
a***@a***
而不是 t***@y***
。这可能会让我们的客户感到困惑。
您对为什么会发生这种情况有任何见解吗?或者您是否遇到过类似的问题?我应该采取什么步骤,例如向 AWS 开具票证?
感谢您的协助。 恩尼奥
当用户处于
FORCE_CHANGE_PASSWORD
状态时,无法使用 ForgotPassword API,根据 AWS re:Post 知识中心:
用户未处于 CONFIRMED 状态
管理员创建的用户默认处于 FORCE_CHANGE_PASSWORD 状态,直到他们使用提供的密码登录。然后,系统会提示用户更改密码。
如果用户状态为FORCE_CHANGE_PASSWORD,则无法使用ForgotPassword API调用,并且不会发送验证码。
您看到
t***@y***
电子邮件地址的原因是一项安全功能,以避免用户枚举(有关此 answer 和 Cognito 开发人员指南的更多信息),如果您禁用 PreventUserExistenceErrors
,您将看到实际的错误信息:
{"__type":"NotAuthorizedException","message":"User password cannot be reset in the current state."}