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

时间:2017-01-31 20:45:37

标签: amazon-web-services authentication amazon-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设置密码或恢复。

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

2 个答案:

答案 0 :(得分:1)

目前,通过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

答案 1 :(得分:0)

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

一旦电话号码或电子邮件被标记为已验证,用户可以在forgetPassword流程中使用它们,它们基本上会获得可用于重置密码的代码。

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