Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

将自定义域添加到用户池

设置客户端应用程序之后,您可以配置注册和登录网页的地址。利用自定义用户池域,您可以让用户使用您自己的 Web 地址登录到 Amazon Cognito。

先决条件

在开始之前,您需要:

  • 用户池和应用程序客户端。有关更多信息,请参阅 用户池入门

  • 您拥有的 Web 域。它的根目录在 DNS 中具有有效的 A 记录。有关更多信息,请参阅域名

  • 您的自定义域的子域。我们建议使用 auth 作为子域。例如:auth.example.com

    注意

    如果您没有通配符证书,则可能需要为自定义域的子域获取新证书。

  • AWS Certificate Manager 管理的安全套接字层 (SSL) 证书。在请求或导入证书之前,您必须在 ACM 控制台中将 AWS 区域更改为美国东部(弗吉尼亚北部)。

  • 要设置自定义域名或更新其证书,您必须有权更新 Amazon CloudFront 分配。为此,您可以为 AWS 账户中的 IAM 用户、组或角色附加以下 IAM 策略声明:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontUpdateDistribution", "Effect": "Allow", "Action": [ "cloudfront:updateDistribution" ], "Resource": [ "*" ] } ] }

    请参阅为 CloudFront 使用基于身份的策略(IAM 策略)

步骤 1:选择自定义域名

从 AWS Certificate Manager 选择自定义域名

  1. 登录 Amazon Cognito 控制台。系统可能会提示您输入 AWS 凭证。

  2. 在导航窗格中,选择 Manage your User Pools,然后选择要编辑的用户池。

  3. 在页面左侧的导航栏上,选择 Domain name (域名)

  4. 选择 Use your domain (使用您的域)

  5. 键入您的自定义域名。您可以通过一系列字母数字 ASCII 字符(a-z、A-Z、0-9)形成域名。连字符 (U+002D) 也是允许的,但不能作为域名的第一个或最后一个字符。

  6. Amazon Certificate Manager 中选择 AWS-managed certificate (AWS 托管证书)。此证书由 AWS 管理,包括为给定自定义域创建和续订它。

    如果您的证书未显示在列表中,您可以通过从 https://console.amazonaws.cn/acm/ 中选择 Provision certificates (预置证书) 来获取一个。

  7. 选择 Save changes

  8. 记下别名目标别名目标是指向 Amazon CloudFront 分配的别名资源记录集,而不是 IP 地址或域名。

步骤 2:添加别名目标和子域

在本步骤中,您将通过域名服务器 (DNS) 服务提供商设置一个别名,该别名指回到上一个步骤中的别名目标。如果您将 Amazon Route 53 用于 DNS 地址解析,请选择 To add an alias target and subdomain using Route 53 (使用 Route 53 添加别名目标和子域) 部分。

将别名目标和子域添加到当前 DNS 配置
  • 如果您没有将 Route 53 用于 DNS 地址解析,则需要让您的 DNS 服务提供商添加上一个步骤中的别名目标作为用户池自定义域的别名。您的 DNS 提供商还需要为您的自定义域设置子域。

使用 Route 53 添加别名目标和子域
  1. 登录 Route 53 控制台。系统可能会提示您输入 AWS 凭证。

  2. 如果您在 Route 53 中没有托管区域,请设置一个托管区域。否则,请跳过此步骤。

    1. 选择 Create Hosted Zone

    2. Domain Name (域名) 列表中选择您的自定义域。

    3. 对于 Comment (注释),键入有关该托管区域的可选注释。

    4. 选择 Create

  3. Hosted Zones (托管区域) 页面上,选择您的托管区域的名称。

  4. 选择 Create Record Set

  5. Alias (别名) 选项选择 Yes (是)

  6. 将在上一个步骤中记下的别名目标名称键入到 Alias Target (别名目标)

  7. 选择 Create

    注意

    您的新记录需要一定时间才会传播到 Route 53 DNS 服务器。目前,验证更改是否已传播的唯一方式是使用 Route 53 GetChange API 方法。更改通常在 60 秒内传播到所有 Route 53 名称服务器。

  8. 使用别名目标在 Route 53 中添加域名。

    1. Hosted Zones (托管区域) 页面上,选择您的托管区域的名称。

    2. 选择 Create Record Set (创建记录集) 并输入以下值:

      1. 对于 Name (名称),键入首选域名。例如,如果您尝试创建的子域是 auth.example.com,请键入 auth

      2. 对于 Type,选择 A - IPv4 address

      3. Alias (别名) 选项选择 Yes (是)

      4. 将在上一个步骤中记下的别名目标名称键入到 Alias Target (别名目标)

    3. 选择 Create

      注意

      或者,您也可以创建一个新的托管区域来保存与您的子域关联的记录。您还可以在父托管区域中创建委托集来将客户端送交给子域托管区域。当您管理托管区域时,此方法提供了更大的灵活性(例如,限制可以编辑该区域的人员)。您只能将此方法用于公有托管区域,因为目前不支持将 NS 记录添加到私有托管区域。有关更多信息,请参阅为通过 Amazon Route 53 托管的域创建子域

步骤 3:验证登录页面

  • 验证登录页面是否可从您的自定义域访问。

    通过在浏览器中输入此地址,使用您的自定义域和子域进行登录。这是包含子域 auth 的自定义域 example.com 的示例 URL:

    https://auth.example.com/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>