Aws Cognito- 用户池,如何在没有电子邮件或电话时为用户恢复/设置密码



Aws Cognito- 用户池,如何在没有电子邮件或电话时为用户恢复/设置密码。

我正在网络上为本地小型企业使用它。并希望用户仅使用用户名。
不要使用电子邮件和电话。

在验证选项卡上,我将两个复选框留空:电话和电子邮件。

然后它显示以下红色警告。

You have not selected either email or phone number verification,
so your users will not be able to
recover their passwords without contacting you for support.

所以我希望他们联系支持人员是可以的。但是我找不到和API来设置他们的密码或管理员恢复。

如果用户与我联系,我该怎么做?

目前,通过 API 有一个解决方法。只需设置一个电子邮件/电话,您/管理员可以在其中接收一次性确认代码(例如:support@test.com)

刚刚在一个旧的 cognito 用户池上进行了测试,由于某种未知原因,不时将 emailed_verified 属性设置为 false(ref)。

用户池具有相同的配置:未启用验证选项。

但是,您可以通过具有开发凭证的 AWS 用户确保 email_verified 属性正常。

使用 CLI 的示例(在 aws-cli/1.16.3 Python/2.7.10 Darwin/18.2.0 botocore/1.11.3 上测试):

USER=test@test.com
POOL_ID=us_east_1-123
POOL_APP_CLIENT_ID=fake123
# Ensure the email_verified attribute is set to true
# https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html
aws cognito-idp admin-update-user-attributes --user-pool-id $POOL_ID --username $USER --user-attributes Name=email_verified,Value=true
# Check the attribute is set/added if missing
# https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/list-users.html
aws cognito-idp list-users --user-pool-id $POOL_ID --query 'Users[?Username==`$USER`].[*]'
# Run Admin Reset PWD
# https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-reset-user-password.html
aws cognito-idp admin-reset-user-password --user-pool-id <Pool ID> --username <USER>
# The email/phone for the user should get a confirmation code
# Set the new pwd
# https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/confirm-forgot-password.html
aws cognito-idp confirm-forgot-password --confirmation-code <Code> --password <New PWD> --username $USER --client-id $POOL_APP_CLIENT_ID

基本上,这意味着您的用户不必验证电子邮件或电话号码。可以通过编写验证它们的 lambda 函数来自动验证它们,或者您可以从控制台代表它们进行验证。

一旦电话号码或电子邮件被标记为已验证,用户就可以在忘记密码流中使用它们,他们基本上会得到一个可以用来重置密码的代码。

您还可以代表他们(从控制台)重置用户密码,这意味着用户将无法登录,并且必须在登录前完成忘记密码流程。同样,电话号码和电子邮件可以从控制台标记为已验证。

最新更新