如何对 Amazon Cognito 用户的 email_verified 属性问题进行故障排除?
我想解决与 Amazon Cognito 用户的 email_verified 属性有关的所有问题。
简短描述
Amazon Cognito 用户群体拥有一组标准属性,该属性可用于识别个人用户。在以下情况下,可能会更改可指示用户的电子邮件地址是否经过了验证的 email_verified 属性:
- 用户更新了他们的电子邮件地址。当用户更新其电子邮件地址时,Amazon Cognito 会将 email_verified 属性更改为未验证。
- 电子邮件地址配置为别名。然后,即会创建具有重复电子邮件地址的用户。将电子邮件地址设置为别名时,只有一个用户可以将该电子邮件地址值作为 email_verified 属性。如果新用户的账户确认成功,则电子邮件地址别名将转移给新用户。然后,前用户的电子邮件地址将更改为未验证。有关更多信息,请参阅用户群体属性并查看自定义登录属性部分。
- 联合用户或链接到联合用户的用户将使用电子邮件映射登录。联合用户登录时,您的用户群体所需的每个用户群体属性都必须存在映射。如果映射了电子邮件属性,则默认情况下,email_verified 属性将更改为未验证。
解决方法
要解决 email_verified 属性的问题,请按照适用于您的情况的步骤进行操作。
**重要提示:**在以下 AWS 命令行界面(AWS CLI)命令示例中,将所有示例字符串的实例替换为您的值。(例如,将 "example_access_token" 替换为您的访问令牌值。)
更新电子邮件地址后的验证
要在用户更新后验证电子邮件地址:
1. 要让 Amazon Cognito 将验证码发送到更新的电子邮件地址,请配置用户群体的电子邮件验证设置。
2. 如有必要,可通过调用 UpdateUserAttributes API 或 AdminUpdateUserAttributes API 更新电子邮件地址。
update-user-attributes 命令示例:
aws cognito-idp update-user-attributes --access-token "example_access_token" --user-attributes Name="email",Value="example_new_email"
admin-update-user-attributes 命令示例:
aws cognito-idp admin-update-user-attributes --user-pool-id "example_user_pool_id" --username "example_username" --user-attributes Name="email",Value="example_new_email"
**重要提示:**AdminUpdateUserAttributes API 还可用于通过将 email_verified 属性设置 True 来自动验证电子邮件。如果使用 AdminUpdateUserAttributes API 自动验证了电子邮件地址,则不需要执行下一步。使用 UpdateUserAttributes API 时,则需要执行下一步。
3. 检查您的新电子邮件收件箱中有无验证码。
4. 调用 VerifyUserAttribute API。将 AccessToken 和 AttributeName 的参数指定为 "email",然后输入上一步中的验证码。
verify-user-attribute 命令示例:
aws cognito-idp verify-user-attribute --access-token "example_access_token" --attribute-name "email" --code "example_verification_code"
要在初始代码到期后验证电子邮件地址:
1. 使用您的用户名登录应用程序,以检索您的访问令牌。
2. 调用 GetUserAttributeVerificationCode API。将 AttributeName 参数设置为 "email"。
get-user-attribute-verification-code 命令示例:
aws cognito-idp get-user-attribute-verification-code --access-token "example_access_token" --attribute-name "email"
3. 调用 VerifyUserAttribute API。将 AccessToken 和 AttributeName 的参数指定为 "email"。输入上一步中的验证码。
确认具有重复电子邮件地址的新用户
要允许确认具有重复电子邮件地址的新用户:
1. 如有必要,调用 SignUp API,以使用配置的电子邮件地址注册用户。
sign-up 命令示例:
aws cognito-idp sign-up --client-id "example_client_id" --username "example_username" --password "example_password" --user-attributes Name="email",Value="example_user_email"
2. 调用 ConfirmSignUp API,其中 ForceAliasCreation 参数设置为 True。
confirm-sign-up 命令示例:
aws cognito-idp confirm-sign-up --client-id "example_client_id" --username "example_username" --confirmation-code "example_confirmation_code" --force-alias-creation
要在注册后拒绝确认具有重复电子邮件地址的新用户:
1. 调用 ConfirmSignUp API,其中 ForceAliasCreation 参数设置为 False。
**注意:**默认情况下,ForceAliasCreation 为 False。因此,无需将其作为参数传递到请求中。
deny-sign-up 命令示例:
aws cognito-idp confirm-sign-up --client-id "example_client_id" --username "example_username" --confirmation-code "example_confirmation_code" --no-force-alias-creation
2. 通过将 ForceAliasCreation 参数设置为 False,API 返回以下错误:
An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.
以管理员身份创建具有重复电子邮件地址的新用户
要以管理员身份创建具有重复电子邮件地址的新用户:
1. 使用配置的电子邮件调用 AdminCreateUser API,其中 email_verified 属性设置为 True 且 ForceAliasCreation 参数设置为 True。
admin-create-user 命令示例:
aws cognito-idp admin-create-user --user-pool-id "example_user_pool_id" --username "example_username" --user-attributes Name="email",Value="example_user_email" Name="email_verified",Value="True" --force-alias-creation
将 email_verified 属性映射到第三方身份提供者(IdP)
要在联合身份验证后保持 email_verified 属性的已验证状态:
1. 从 Amazon Cognito console(Amazon Cognito 控制台),将验证状态的 IdP 属性映射到 email_verified 属性。
**注意:**大多数 OpenID Connect(OIDC)提供者都包含 email_verified 属性。
相关信息
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前