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

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

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

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

通过托管用户界面和联合终端节点,Amazon Cognito 可以对本地和第三方 IdP 用户进行身份验证并颁JSON发网络令牌 ()。JWTs使用 Amazon Cognito 发行的令牌,您可以将多个身份源整合为适用于所有应用程序的通用 OpenID Connect (OIDC) 标准。Amazon Cognito 可以将您的第三方提供商的SAML声明处理为该标准。SSO您可以在、通过 Amazon Cognito 用户池或使用 Amazon Cognito 用户池创建和管理 SAML IdP。 Amazon Web Services Management Console Amazon CLI API要在中创建您的第一个 SAML IdP Amazon Web Services Management Console,请参阅。在用户池中添加和管理SAML身份提供商

带有SAML登录功能的身份验证概述
注意

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

IdP 配置的快速参考

您必须将 SAML IdP 配置为接受请求并将响应发送到您的用户池。您的 SAML IdP 文档将包含有关如何将您的用户池添加为 2.0 SAML 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) 会在用户的断言中向 Amazon Cognito 传递一个唯一NameId的。SAMLAmazon Cognito 通过SAML声明来识别联合身份用户。NameId无论您的用户池的区分大小写设置如何,Amazon Cognito 在通过唯一且区分大小写的声明时,Amazon Cognito 都会识别他们从 SAML IdP 返回的联合用户。NameId如果您将 email 等属性映射到 NameId,并且您的用户更改其电子邮件地址,他们将无法登录您的应用程序。

从 IdP 属性NameId中映射SAML断言,该属性具有不变的值。

例如,Carlos 在您的不区分大小写的用户池中有一个用户配置文件,该断言的值为 Active Directory Federation Services (ADFS) SAML 断言。NameId Carlos@example.com下次 Carlos 尝试登录时,您的 ADFS IdP 的NameId值为。carlos@example.com由于 NameId 的大小写必须完全匹配,登录不成功。

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