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

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

在用户池中使用 SAML 身份提供商

你可以选择让你的网络和移动应用程序用户通过 SAML 身份提供商 (IdP) 登录,例如微软 Active Directory 联合身份验证服务 (ADFS) 或 Shibboleth。您必须选择支持 SAML 2.0 标准的 SAML IdP。

借助托管的用户界面和联合终端节点,Amazon Cognito 可以对本地和第三方 IdP 用户进行身份验证,并发放 JSON 网络令牌 (JWT)。使用 Amazon Cognito 发行的令牌,您可以将多个身份源整合为适用于所有应用程序的通用 OpenID Connect (OIDC) 标准。Amazon Cognito 可以将您的第三方提供商的 SAML 声明处理为该 SSO 标准。您可以在、通过 Amazon CLI或使用 Amazon Cognito 用户池 API 创建和管理 SAML IdP。 Amazon Web Services Management Console要在中创建您的第一个 SAML IdP Amazon Web Services Management Console,请参阅。在用户池中添加和管理 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 网址
https://Your user pool domain/saml2/idpresponse

您必须配置您的用户池以支持您的身份提供商。添加外部 SAML IdP 的高级步骤如下。

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

  2. 向您的用户池中添加新的 IdP。上传 SAML 元数据或提供元数据网址。请参阅 在用户池中添加和管理 SAML 身份提供商

  3. 将 IdP 分配给您的应用程序客户端。请参阅 用户池应用程序客户端

SAML 用户名区分大小写

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

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

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

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