

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon Cognito 前缀域进行托管登录
<a name="cognito-user-pools-assign-domain-prefix"></a>

托管登录的默认体验托管在 Amazon 拥有的网域上。这种方法的进入门槛较低（选择一个前缀名称即可生效），但该方法没有自定义域所具有的值得信任的特征。Amazon Cognito 域选项和自定义域选项在费用上没有差异。唯一的差异是您引导用户访问的 Web 地址中的域。对于第三方 IdP 重定向和客户端凭证流，托管域几乎没有明显的影响。自定义域更适合以下情况，即，您的用户使用托管登录进行登录，并且会与不匹配应用程序域的身份验证域进行交互。

托管的 Amazon Cognito 域有您选择的前缀，但托管在根域 `amazoncognito.com`。以下是示例：

```
https://cognitoexample.auth.ap-south-1.amazoncognito.com
```

所有前缀域都遵循以下格式：`prefix`.`auth`.*`Amazon Web Services 区域 code`*.`amazoncognito`.`com`。[自定义域](cognito-user-pools-add-custom-domain.md)用户池可以在您拥有的任何域中对托管登录或托管 UI 页面进行托管。

**注意**  
为了增强您的 Amazon Cognito 应用程序的安全性，用户池端点的父域将在[公共后缀列表 (PSL)](https://publicsuffix.org/) 中注册。PSL 可帮助用户的网络浏览器对您的用户池端点及其设置的 Cookie 建立一致的理解。  
用户池父域采用以下格式。  

```
auth.Region.amazoncognito.com
auth-fips.Region.amazoncognito.com
```

要使用添加应用程序客户端和用户池域 Amazon Web Services 管理控制台，请参阅[创建应用程序客户端](user-pool-settings-client-apps.md#cognito-user-pools-app-idp-settings-console-create)。

**Topics**
+ [先决条件](#cognito-user-pools-assign-domain-prefix-prereq)
+ [配置 Amazon Cognito 域前缀](#cognito-user-pools-assign-domain-prefix-step-1)
+ [验证登录页面](#cognito-user-pools-assign-domain-prefix-verify)

## 先决条件
<a name="cognito-user-pools-assign-domain-prefix-prereq"></a>

在开始之前，您需要：
+ 用户池和应用程序客户端。有关更多信息，请参阅 [用户池入门](getting-started-user-pools.md)。

## 配置 Amazon Cognito 域前缀
<a name="cognito-user-pools-assign-domain-prefix-step-1"></a>

您可以使用 Amazon Web Services 管理控制台 或 Amazon CLI 或 API 来配置用户池域。

------
#### [ Amazon Cognito console ]

**配置域**

1. 导航到**品牌**下的**域**菜单。

1. 选择**域**旁边的**操作**，然后选择**创建 Cognito 域**。如果您已配置用户池前缀域，请先选择**删除 Cognito 域**，然后再创建新的自定义域。

1. 输入可用的域前缀，以与 **Amazon Cognito 域**结合使用。有关设置**自定义域**的信息，请参阅[使用您自己的域进行托管登录](cognito-user-pools-add-custom-domain.md)。

1. 选择**品牌版本**。您的品牌版本适用于该域的所有用户交互页面。您的用户池可以针对所有应用程序客户端，对托管登录或托管 UI 品牌进行托管。
**注意**  
您可以拥有自定义域和前缀域，但是 Amazon Cognito 仅为*自定义*域处理 `/.well-known/openid-configuration` 端点。

1. 选择**创建**。

------
#### [ CLI/API ]

使用以下命令可以创建域前缀并将其分配到您的用户池。

**配置用户池域**
+ Amazon CLI: `aws cognito-idp create-user-pool-domain`

  **示例**：`aws cognito-idp create-user-pool-domain --user-pool-id <user_pool_id> --domain <domain_name> --managed-login-version 2`
+ 用户池 API 操作：[CreateUserPoolDomain](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html)

**获取有关域的信息**
+ Amazon CLI: `aws cognito-idp describe-user-pool-domain`

  **示例**：`aws cognito-idp describe-user-pool-domain --domain <domain_name>`
+ 用户池 API 操作：[DescribeUserPoolDomain](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html)

**删除域**
+ Amazon CLI: `aws cognito-idp delete-user-pool-domain`

  **示例**：`aws cognito-idp delete-user-pool-domain --domain <domain_name>`
+ 用户池 API 操作：[DeleteUserPoolDomain](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html)

------

## 验证登录页面
<a name="cognito-user-pools-assign-domain-prefix-verify"></a>
+ 验证登录页面是否可从您的 Amazon Cognito 托管域访问。

  ```
  https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>
  ```

您的域显示在 Amazon Cognito 控制台的 **Domain name (域名)** 页面上。您的应用程序客户端 ID 和回调 URL 将显示在 **App client settings**（应用程序客户端设置）页面上。