Cognito 为新用户重置密码的奇怪行为:CodeDeliveryDetails 中的电子邮件地址错误

问题描述 投票:0回答:1

我使用 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 开具票证?

感谢您的协助。 恩尼奥

amazon-web-services amazon-cognito reset-password
1个回答
0
投票

当用户处于

FORCE_CHANGE_PASSWORD
状态时,无法使用 ForgotPassword API,根据 AWS re:Post 知识中心:

用户未处于 CONFIRMED 状态

管理员创建的用户默认处于 FORCE_CHANGE_PASSWORD 状态,直到他们使用提供的密码登录。然后,系统会提示用户更改密码。

如果用户状态为FORCE_CHANGE_PASSWORD,则无法使用ForgotPassword API调用,并且不会发送验证码。

您看到

t***@y***
电子邮件地址的原因是一项安全功能,以避免用户枚举(有关此 answerCognito 开发人员指南的更多信息),如果您禁用
PreventUserExistenceErrors
,您将看到实际的错误信息:
{"__type":"NotAuthorizedException","message":"User password cannot be reset in the current state."}

© www.soinside.com 2019 - 2024. All rights reserved.