配置用户池域
配置域是设置用户池的可选部分。用户池域托管用于用户身份验证、与第三方提供者的联合身份验证以及 OpenID Connect(OIDC)流等功能。它具有托管登录,这是用于执行注册、登录和密码恢复等密钥操作的预构建界面。它还托管标准 OpenID Connect(OIDC)端点(例如授权、用户信息和令牌),用于机器对机器(M2M)授权以及其他 OIDC 和 OAuth 2.0 身份验证和授权流。
用户在与您的用户池关联的域中使用托管登录页面进行身份验证。您可以通过两种方式配置此域:您可以使用默认 Amazon Cognito 托管域,也可以配置自己拥有的自定义域。
自定义域选项在灵活性、安全性和控制性方面有更多选择。例如,一个熟悉的、由组织拥有的域可以增强用户信任并使登录过程更加直观。但是,自定义域名方法需要一些额外的开销,例如管理 SSL 证书和 DNS 配置的开销。
OIDC 发现端点(用于端点 URL 的 /.well-known/openid-configuration 和用于令牌签名密钥的 /.well-known/jwks.json)未托管在您的域中。有关更多信息,请参阅身份提供者和依赖方端点。
了解如何为您的用户池配置和管理域,这是将身份验证集成到应用程序中的重要一步。使用用户池 API 和 Amazon SDK 登录可以作为配置域的替代方法。基于 API 的模型直接在 API 响应中提供令牌,但是对于使用用户池扩展功能作为 OIDC IdP 的实现,必须配置域。有关用户池中可用的身份验证模型的更多信息,请参阅了解 API、OIDC 和托管登录页面身份验证。
用户池域需知信息
用户池域是应用程序中的 OIDC 依赖方和 UI 元素的服务点。当您计划为用户池实施域时,请考虑以下详细信息。
保留术语
您不能在 Amazon Cognito 前缀域的名称中使用文本 aws、amazon 或 cognito。
发现端点位于另一个域中
用户池发现端点 .well-known/openid-configuration 和 .well-known/jwks.json 不在您的用户池自定义域或前缀域中。这些端点的路径如下所示。
-
https://cognito-idp.Region.amazonaws.com/your user pool ID/.well-known/openid-configuration -
https://cognito-idp.Region.amazonaws.com/your user pool ID/.well-known/jwks.json
域变更的生效时间
Amazon Cognito 可能需要长达一分钟的时间才能启动或更新前缀域的品牌版本。对自定义域的更改最长可能需要五分钟才能传播。新自定义域最长可能需要一小时才能传播。
同时使用自定义域和前缀域
您可以使用自定义域和 Amazon 拥有的前缀域来设置用户池。由于用户池发现端点托管在另一个域中,因此它们仅为自定义域提供服务。例如,您的 openid-configuration 将为 "authorization_endpoint" 提供单个值:"https://auth.example.com/oauth2/authorize"。
当用户池中同时包含自定义域和前缀域时,您可以使用自定义域来启用 OIDC 提供程序的完整特征。用户池中具有此配置的前缀域没有发现或令牌签名密钥端点,因此应适当地使用。
首选自定义域作为通行密钥的依赖方 ID
使用通行密钥设置用户池身份验证时,必须设置依赖方(RP)ID。如果同时具有自定义域和前缀域,则只能将 RP ID 设置为自定义域。要在 Amazon Cognito 控制台中将前缀域设置为 RP ID,请删除您的自定义域,或将前缀域的完全限定的域名(FQDN)作为第三方域进行输入。
不要在域层次结构的不同级别使用自定义域
您可以为不同的用户池配置独立的自定义域,并且这些域可以共享同一个顶级域(TLD),例如 auth.example.com 和 auth2.example.com。托管登录会话 Cookie 对自定义域和所有子域(如 *.auth.example.com)均有效。因此,您的应用程序的任何用户都不应访问任何父域和子域的托管登录。如果自定义域使用相同的 TLD,则应将其保持在相同的子域级别。
假设您有一个使用自定义域 auth.example.com 的用户池。然后创建另一个用户池并分配自定义域 uk.auth.example.com。用户使用 auth.example.com 登录,并获得 Cookie,他们的浏览器会将其呈现给通配符路径 *.auth.example.com 中的任何网站。然后他们尝试登录 uk.auth.example.com。他们向用户池域传递无效 Cookie,将收到错误信息,而不是收到登录提示。相比之下,拥有 *.auth.example.com 的 Cookie 的用户可以在 auth2.example.com 启动登录会话,而不会遇到任何问题。
品牌版本
创建域时可设置品牌版本。您可以选择更新的托管登录体验或经典的托管 UI 体验。这一选择适用于在您的域中托管服务的所有应用程序客户端。