恢复FORCE_CHANGE_PASSWORD状态的密码

时间:2017-12-05 13:32:12

标签: amazon-web-services amazon-cognito

我需要在状态为FORCE_CHANGE_PASSWORD时恢复或重置用户密码。当用户尝试使用“忘记密码”功能恢复密码并且他丢失了带有临时密码的电子邮件时,就会发生这种情况现在他不能做任何事情,因为他不记得密码,他再也无法重置密码

此代码处理忘记密码

return CognitoIdentitySP.forgotPassword(params, (err, resp) => {
  if (err) { ... }
  ...
})

我收到错误(如果是FORCE_CHANGE_PASSWORD状态)

NotAuthorizedException: User password cannot be reset in the current state.

有没有办法在这种状态下重置密码?

3 个答案:

答案 0 :(得分:3)

您可以使用aws-cli来完成。这是一个示例命令,分别替换POOL_IDEMAIL_ADDRESS

aws cognito-idp admin-create-user --user-pool-id <POOL_ID> --username <EMAIL_ADDRESS> --message-action RESEND --profile <AWS_PROFILE>

答案 1 :(得分:2)

在临时密码丢失或过期的情况下,您也可以使用admin-set-user-password命令:

aws cognito-idp admin-set-user-password --user-pool-id <POOL_ID> --username <USERNAME> --password <PASSWORD> --no-permanent

这将设置一个新的临时密码,无论您设置的密码是什么,但重要的是将强制用户在登录后立即设置一个新密码,以确保安全性。

您需要将此信息传达给用户,但是当您公司的安全策略阻止您能够运行create user命令时,我们发现这非常有用。

答案 2 :(得分:0)

您可以再次呼叫admin create user,并将MessageAction设置为RESEND,在这种情况下,Cognito会将邀请消息重新发送给已存在的用户,并重置用户帐户的到期限制。设置为&#34; SUPPRESS&#34;禁止发送消息。只能指定一个值。