将 SAML 身份提供者与用户池配合使用 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 SAML 身份提供者与用户池配合使用

可以选择允许 Web 和移动应用程序用户通过 SAML 身份提供者(IdP)[如 Microsoft Active Directory 联合身份验证服务(ADFS)Shibboleth] 登录。您必须选择支持 SAML 2.0 标准的 SAML IdP。

通过托管 UI 和联合身份验证端点,Amazon Cognito 对本地和第三方 IdP 用户进行身份验证,并发放 JSON Web 令牌(JWT)。使用 Amazon Cognito 发放的令牌,您可以将多个身份源整合为适用于所有应用程序的通用 OpenID Connect(OIDC)标准。Amazon Cognito 可以处理来自第三方提供者的 SAML 断言,并将其转换为 SSO 标准。您可以在 Amazon Web Services Management Console 中、通过 Amazon CLI 或使用 Amazon Cognito 用户池 API 创建和管理 SAML IdP。要在 Amazon Web Services Management Console 中创建第一个 SAML IdP,请参阅 在用户池中添加和力 SAML 身份提供者

SAML 登录的身份验证概述
注意

通过第三方 IdP 登录进行联合身份验证是 Amazon Cognito 用户池的一项特征。Amazon Cognito 身份池(有时称为 Amazon Cognito 联合身份)是一种联合身份验证的实现,您必须在每个身份池中单独进行设置。用户池可以是身份池的第三方 IdP。有关更多信息,请参阅 Amazon Cognito 身份池

IdP 配置的快速参考

您必须配置 SAML IdP,以便接受请求并向用户池发送响应。SAML IdP 的文档将包含相关信息,让您可以了解如何将用户池添加为 SAML 2.0 IdP 的依赖方或应用程序。接下来的文档将提供必须为 SP 实体 ID 和断言使用者服务(ACS)URL 提供的值。

用户池 SAML 值快速参考
SP 实体 ID
urn:amazon:cognito:sp:us-east-1_EXAMPLE
ACS URL
https://Your user pool domain/saml2/idpresponse

您必须配置用户池来支持您的身份提供者。添加外部 SAML IdP 的大致步骤如下。

  1. 从您的 IdP 下载 SAML 元数据,或检索元数据端点的 URL。请参阅 配置第三方 SAML 身份提供者

  2. 将新的 IdP 添加到用户池。上传 SAML 元数据或提供元数据 URL。请参阅 在用户池中添加和力 SAML 身份提供者

  3. 将 IdP 分配给您的应用程序客户端。请参阅 特定于应用程序的应用程序客户端设置

SAML 用户名区分大小写

当联合用户尝试登录时,SAML 身份提供者(IdP)在用户的 SAML 断言中将唯一 NameId 传递给 Amazon Cognito。Amazon Cognito 通过其 NameId 声明识别 SAML 联合身份用户。无论您的用户池的区分大小写如何设置,当从 SAML IdP 返回的联合用户传递其唯一且区分大小写的 NameId 声明时,Amazon Cognito 都会识别该用户。如果您将 email 等属性映射到 NameId,并且您的用户更改其电子邮件地址,他们将无法登录您的应用程序。

从具有不会改变的值的 IdP 属性映射 SAML 断言中的 NameId

例如,Carlos 在您的不区分大小写的用户池中具有来自 Active Directory 联合身份验证服务 (ADFS) SAML 断言的用户配置文件,该断言传递了Carlos@example.comNameId 值。下次 Carlos 尝试登录时,您的 ADFS IdP 会传递carlos@example.comNameId 值。由于 NameId 的大小写必须完全匹配,登录不成功。

如果您的用户在其 NameID 更改后无法登录,请从您的用户池中删除他们的用户配置文件。Amazon Cognito 将在用户下次登录时创建新的用户配置文件。