恢复FORCE_CHANGE_PASSWORD状态的密码

Bog*_*dan 7 amazon-web-services amazon-cognito

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

此代码处理忘记了密码

return CognitoIdentitySP.forgotPassword(params, (err, resp) => {
  if (err) { ... }
  ...
})
Run Code Online (Sandbox Code Playgroud)

而且我收到错误消息(如果是FORCE_CHANGE_PASSWORD状态)

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

有什么方法可以在这种状态下重设密码吗?

Ion*_*ian 6

您可以再次调用管理员创建用户,并将 MessageAction 设置为 RESEND,在这种情况下,Cognito 会将邀请消息重新发送给已存在的用户,并重置用户帐户的过期限制。设置为“SUPPRESS”以禁止发送消息。只能指定一个值。


Qin*_*jie 5

您可以使用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>
Run Code Online (Sandbox Code Playgroud)


And*_*rew 5

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

aws cognito-idp admin-set-user-password --user-pool-id <POOL_ID> --username <USERNAME> --password <PASSWORD> --no-permanent
Run Code Online (Sandbox Code Playgroud)

这将为您设置的任何密码设置一个新的临时密码,但重要的是将强制用户在登录后立即设置新密码,从而保持安全性。

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