如何在 Amazon Cognito 中恢复用户密码?

1 分钟阅读
0

我想在 Amazon Cognito 中恢复用户密码。

解决方法

在 Amazon Cognito 中恢复用户密码有两种方法:

  • 通过经过验证的电子邮件或电话号码。
  • 通过管理员提供的用户密码。

电子邮件或电话号码验证

您可以使用 ForgotPassword API 命令来恢复用户密码。ForgotPassword API 命令将恢复代码发送到经过验证的电子邮件或经过验证的电话号码。恢复代码的有效期为一小时。然后,使用 ConfirmForgotPassword API 命令输入用于重置密码的确认码。

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI

AWS CLI 命令:

ForgotPassword

aws cognito-idp forgot-password --client-id 38fjsnc484p94kpqsnet7mpld0 --username jane@example.com

输出:

{
  "CodeDeliveryDetails": {
    "Destination": "j***@e***.com",
    "DeliveryMedium": "EMAIL",
    "AttributeName": "email"
  }
}

ConfirmForgotPassword

aws cognito-idp confirm-forgot-password --client-id 3n4b5urk1ft4fl3mg5e62d9ado --username=diego@example.com --password PASSWORD --confirmation-code CONF_CODE

**注意:**如果您满足以下两个要求,则必须在 CLI 命令中传递 --secret-hash:

  • 您的 AWS CLI 命令使用 --client-id 作为参数。
  • 应用程序客户端配置了密钥。

要计算应用程序客户端的密钥哈希,请参阅[如何解决 Amazon Cognito 用户群体 API 中的“无法验证客户端

的密钥哈希”错误?](https://repost.aws/zh-Hans/knowledge-center/cognito-unable-to-verify-secret-hash)

管理员重置

**注意:**如果您不是管理员,请联系您的管理员完成以下操作。

当您调用 AdminResetUserPassword API 命令时,当前密码失效,您必须对其进行更改。如果用户在调用 API 命令后尝试登录,则该应用程序将执行以下操作:

  • 重新获取 PasswordResetRequiredException
  • 通过忘记密码流程指导用户重置密码。

此外,在以下情况下,调用 API 会向用户发送一条消息,其中包含更改密码的代码:

  • 用户群体已设置电话验证,并且
  • 用户拥有经过验证的电话号码或电子邮件。

AWS CLI 命令:

AdminResetUserPassword

aws cognito-idp admin-reset-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com

ConfirmForgotPassword

aws cognito-idp confirm-forgot-password --client-id 3n4b5urk1ft4fl3mg5e62d9ado --username diego@example.com --password PASSWORD --confirmation-code CONF_CODE

AdminSetUserPassword

作为管理员,您还可以使用 AdminSetUserPassword API 命令在用户群体中调用用户的密码。密码可以是临时的,也可以是永久的。如果是临时的,则用户状态会进入 FORCE_CHANGE_PASSWORD 状态。当您登录时,InitiateAuth/AdminInitiateAuth 响应会包含 NEW_PASSWORD_REQUIRED 质询。如果您在密码过期之前没有登录,则无法登录,必须重置密码。设置新密码后,或者如果密码是永久密码,则用户状态将设置为 CONFIRMED。

aws cognito-idp admin-set-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com --password Hello@123 --permanent

AWS 官方
AWS 官方已更新 1 年前