首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >认知w/ SES验证域标识后用户注册错误页疑难解答

认知w/ SES验证域标识后用户注册错误页疑难解答
EN

Stack Overflow用户
提问于 2022-09-30 14:27:57
回答 1查看 163关注 0票数 0

一段时间以来,我一直想弄清楚这件事,但运气不佳。

我已经为我的网站创建了一个AWS认知用户池。对于我的用户,我使用电子邮件地址作为用户名。我正在使用托管的UI进行用户注册、登录等。我已经配置了用户池,以使用一个已被验证的SES验证域标识和一个由no-reply@myverifieddomainidentity组成的电子邮件地址作为发件人。域名身份仍然在电子邮件沙箱中。此外,我有一个额外的SES验证的电子邮件身份,我正在使用测试的认知电子邮件集成。这封电子邮件是我的个人Gmail地址,而不是经过验证的域标识中的地址。认知资源和SES资源都是在美国西部-2号创造的。

我正在尝试测试新用户的注册过程。在我的应用程序中,用户单击Login按钮,这会使他们进入登录页面的认知托管UI。我可以点击注册按钮,并向您提交注册表格。我填写信息,使用我的个人电子邮件地址,并点击注册按钮。然后重定向到/error页面。

在我的认知用户池中,我看到用户被添加,但我从未收到确认邮件。看SES仪表板,它从来没有报告任何电子邮件被发送。这告诉我问题在科尼托和SES之间。我找不到任何方式记录科尼托或SES,以确定为什么电子邮件不发出,或为什么我被重定向到/error页面的科尼托托管UI。CloudTrail只显示获取的页面的认知事件,而不是我所能找到的任何故障。

我已经为Congito设置了我的SES验证域,如AWS文档(https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html#user-pool-email-configure)中所述。在第三步,它说我不需要给予任何额外的权限给科尼托(请参阅“授予使用您的Amazon配置的权限”)。但是,我尝试在我的SES验证域中添加一个授权策略,作为第3步中的大纲,标题为“授予使用默认电子邮件功能的权限”,这也不起作用。

我甚至通过AWS执行了注册过程,它成功地返回,但没有发送电子邮件。

我已经发送了成功的模拟测试电子邮件从SES没有问题。

我读过任何AWS文档,博客,所以我可以找到帮助解决这个问题的帖子。不幸的是,我不能用Amazon创建一个支持票,因为这是我的个人项目,并且不支付该级别的服务。

我不相信我需要建立任何MX记录的验证域,因为我还没有计划收到任何电子邮件,只是发送。我也不应该创建额外的SES验证的电子邮件地址为no-reply@myverifieddomainidentity概述在文档中,但我已经尝试过。我也不相信,我需要走出的SES沙箱,只要我是发送电子邮件来验证电子邮件身份,但我可能是错的。

我在找人帮忙解决这个问题。如果有一种方法能够监控科尼图和/或SES,来明确地确定两者为什么不一起工作,那就太好了。除了将CloudTrail事件发送到CloudWatch之外,我看不出任何其他的登录选项,这似乎没有什么帮助。对于SES,我似乎可以添加一些主题来监控被弹出的电子邮件等等,但在这种情况下,这对我没有帮助,因为电子邮件似乎还没有到达科尼图。我似乎找不出为什么托管的UI将我重定向到/error页面。

资源是用Terraform创建的。张贴在这里,你可以看到完整的配置。

代码语言:javascript
运行
复制
resource "aws_ses_domain_identity" "this" {
  domain = aws_route53_zone.external.name
}

resource "aws_route53_record" "ses_domain_identity_verification_record" {
  zone_id = aws_route53_zone.external.zone_id
  name    = "_ses_domain_identity_verification" # TODO: need full domain name? "_ses_verification_record.${aws_route53_zone.external.name}"
  type    = "CNAME"
  ttl     = "60"
  records = [aws_ses_domain_identity.this.verification_token]
}

resource "aws_ses_domain_dkim" "this" {
  domain = aws_ses_domain_identity.this.domain
}

resource "aws_route53_record" "ses_dkim_verification_record" {
  count = 3 # resource aws_ses_domain_dkim creates 3 tokens

  zone_id = aws_route53_zone.external.id
  name    = "${element(aws_ses_domain_dkim.this.dkim_tokens, count.index)}._domainkey"
  type    = "CNAME"
  ttl     = "1800"
  records = ["${element(aws_ses_domain_dkim.this.dkim_tokens, count.index)}.dkim.amazonses.com"]
}

resource "aws_cognito_user_pool" "this" {
  name = local.project-deployment-name

  admin_create_user_config {
    allow_admin_create_user_only = false
  }

  password_policy {
    minimum_length                   = 8
    require_lowercase                = true
    require_numbers                  = true
    require_symbols                  = true
    require_uppercase                = true
    temporary_password_validity_days = 1
  }

  username_attributes = ["email"]

  # TODO: see https://github.com/hashicorp/terraform-provider-aws/issues/26726
  #  user_attribute_update_settings {
  #    attributes_require_verification_before_update = ["email"]
  #  }

  email_configuration {
    email_sending_account = "DEVELOPER"
    from_email_address    = "no-reply@${aws_ses_domain_identity.this.domain}"
    source_arn            = aws_ses_domain_identity.this.arn
  }

  account_recovery_setting {
    recovery_mechanism {
      name     = "verified_email"
      priority = 1
    }
  }
  
  schema {
    name                = "email"
    attribute_data_type = "String"
    required            = true
    mutable             = true
  }

  schema {
    name                = "name"
    attribute_data_type = "String"
    required            = true
    mutable             = true
  }

  schema {
    name                = "birthdate"
    attribute_data_type = "String"
    required            = true
    mutable             = true
  }
}

任何帮助都是非常感谢的。谢谢。

编辑:

我只是尝试使用默认的电子邮件解决方案使用no-reply@verificationemail.com的默认电子邮件解决方案,而我只是经历了同样的行为,所以问题可能不是在认知和SES之间,而是在科尼图本身。宿主UI重定向到错误页面,用户被添加到用户池中,没有收到电子邮件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-04 14:09:38

更正的答案:

我意识到我的问题实际上是没有auto_verified_attributes集的值集。我没有正确理解那个设置的目的。将下面的配置添加到上面的aws_cognito_user_pool资源,解决了我的特定问题。

代码语言:javascript
运行
复制
auto_verified_attributes = ["email"] 

先前的回答:

所以事实证明,这个问题摆在我面前,但一点也不明显。

代码语言:javascript
运行
复制
  # TODO: see https://github.com/hashicorp/terraform-provider-aws/issues/26726
  #  user_attribute_update_settings {
  #    attributes_require_verification_before_update = ["email"]
  #  }

没有启用“属性验证和用户帐户确认”功能将完全破坏注册过程。我甚至不认为这是一个原因,因为1)这是一个新的特性,我会怀疑在此功能之前的注册过程将是功能性的,2)这是一个可选的特性。

我从来没有找到任何好的方法来确定为什么在注册过程中重定向到错误页面的用户。我怀疑唯一真正找到答案的方法就是用AWS提交一张罚单。我只有通过拼命地调整配置才发现这一点,直到有什么东西起作用。

希望这将帮助其他人发现自己处于类似的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73910276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档