

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

# 用户池多租户最佳实践
<a name="bp_user-pool-based-multi-tenancy"></a>

在应用程序中为每个租户创建一个用户池。此方法为每个租户提供最大程度的隔离。您可以为每个租户实施不同的配置。通过用户池进行租户隔离使您可以灵活地进行 user-to-tenant映射。您可以为同一用户创建多个配置文件。但是，每个用户必须为他们可以访问的每个租户单独注册。

使用此方法，可以单独为每个租户设置托管 UI，并将用户重新导向到您应用程序的租户特定实例。您还可以使用此方法与 [Amazon API Gateway](https://docs.amazonaws.cn/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) 等后端服务集成。

下图显示每个租户都有一个专用用户池。

![\[one-to-one多租户模型示意图，其中每个租户都有自己的用户池。\]](http://docs.amazonaws.cn/cognito/latest/developerguide/images/multi-tenancy-user-pool.png)


**何时实施用户池多租户**  
当隔离和自定义是您的主要关注点时。在具有多个用户池的架构中，用户和租户之间的关系可能很复杂。举一个例子，您有两个教育租户。同一个用户在一个应用程序中可能是访问受限的学生，而在另一个应用程序中可能是具有较高权限的教师。您可能需要在一个应用程序中使用 MFA，但在另一个应用程序中不需要使用 MFA，或者两个应用程序有不同的密码策略。由于本地用户可以通过托管登录登录到用户池中的多个应用程序客户端，因此，当您希望多个租户通过托管登录进行登录时，用户池多租户也是理想的选择。

**工作量水平**  
使用此方法的开发和操作工作量很大。为了确保您的应用程序系列获得一致且可预测的结果，必须将 Amazon Cognito 资源与自动化工具集成，并在身份验证架构变得越来越复杂时维持最初设定的基准。当您想为应用程序打造统一的起始页面时，您必须构建用户界面（UI）元素来捕获用户的初步选择，并将他们引导到正确的资源。