Amazon Cognito:要求验证电子邮件和电话

时间:2018-02-08 15:40:08

标签: amazon-cognito

如果用户同时提供电子邮件和电话,我需要同时验证两者。如果没有这里描述的额外步骤,看起来没有办法做到这一点

https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-email-phone-verification.html

有没有办法要求同时进行验证?

目前看来我必须等待验证电话号码,首先验证phoneNumbber。之后调用initiateAuth获取访问令牌以检索userInfo并检查电子邮件是否需要验证,并发送验证码。从测试中我发现电子邮件验证不会阻止initiateAuth请求,因此需要在每个initiateAuth请求之前发出getUser请求,以查看是否需要验证,如果电子邮件仍需要验证,则不返回访问令牌。

3 个答案:

答案 0 :(得分:0)

我在Cognito团队。此时描述的方案是不可能的(在登录前需要验证电子邮件和电话号码)。如果电话号码和电子邮件都需要验证,如果用户属性中存在电话号码,则验证码将被发送到电话号码,并按优先顺序排列。此外,调用verifyUserAttribute以使您能够验证电子邮件需要AccessToken将电子邮件标记为已验证。

答案 1 :(得分:0)

不幸的是,如果您在注册时未提供电话号码,Cognito只会向您发送电子邮件验证链接。如果您提供一个空的电话号码属性值和一个有效的电子邮件地址,在这种情况下,它将发送电子邮件。

这真的很糟糕,因为SMS消息有时无法实时到达端点。

答案 2 :(得分:0)

例如,如果您想验证注册流程中的两种联系方式,您可以这样做(例如,您必须拥有自己的 otp 验证流程):

  1. 在不通知用户注册的情况下创建具有管理员权限的用户

https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-create-user.html

https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html

setTimeout

(这个可以在你开发的otp验证后编程)

  1. 然后分配要确认的密码

https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-set-user-password.html

https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html

aws cognito-idp admin-create-user --user-pool-id us-east-2_fggdfg --username 117979111  --user-attributes Name=email,Value=calderonr.robinson@gmail.com Name=phone_number,Value="+5732085654" Name=custom:id,Value="1179791" Name=name,Value="Robinson C" --message-action SUPPRESS
  1. 将正在验证的联系方式指定为 true

https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html

https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html

aws cognito-idp admin-set-user-password --user-pool-id us-east-2_fggdfg --username 117979111 --password "loquesea" --permanent

您可以使用 aws SDK 2 完美地完成这一切