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

向用户池添加 SAML 身份提供商

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

利用内置托管 Web UI,Amazon Cognito 将为所有经过身份验证的用户提供令牌处理和管理。这样,后端系统可以基于一组用户池令牌实现标准化。您可以通过 Amazon CLI 或使用 Amazon Cognito API 调用在 Amazon Web Services Management Console 中创建和管理 SAML IdP。要开始使用控制台,请参阅使用 Amazon Web Services Management Console将“通过基于 SAML 的身份提供商登录”添加到用户池


                社交登录的身份验证概述
注意

通过第三方(联合身份验证)进行登录可在 Amazon Cognito 用户池中实现。此功能不依赖于通过 Amazon Cognito 身份池(联合身份)实现的联合身份验证。

您需要更新 SAML IdP 并配置用户池以支持此提供商。请参阅 SAML IdP 的文档,了解有关如何将您的用户池添加为 SAML 2.0 IdP 的依赖方或应用程序的信息。

Amazon Cognito 和您的 SAML IdP 使用 relayState 参数维护会话信息。

relayState 需知信息

  1. Amazon Cognito 支持大于 80 个字节的 relayState 值。虽然 SAML 规范规定 relayState 值“长度不得超过 80 个字节”,但目前的行业惯例往往偏离这种行为。因此,拒绝超过 80 个字节的 relayState 值将破坏许多标准 SAML 提供商集成。

  2. RelayState 令牌是对 Amazon Cognito 维护的状态信息的不透明引用。Amazon Cognito 不保证 relayState 参数的内容。不要解析其内容,以免您的应用程序依赖解析结果。有关更多信息,请参阅 SAML 2.0 规范

请参阅 SAML 身份提供商的文档,了解有关如何将您的用户池添加为 SAML 2.0 身份提供商的依赖方或应用程序的信息。在用户群体域中为您的 SAML 身份提供者中的 SAML 2.0 POST 绑定配置以下端点。有关用户群体域的更多信息,请参阅 配置用户池域

https://Your user pool domain/saml2/idpresponse With an Amazon Cognito domain: https://<yourDomainPrefix>.auth.<region>.amazoncognito.com/saml2/idpresponse With a custom domain: https://Your custom domain/saml2/idpresponse

您可以在 Amazon Cognito 控制台Domain name(域名)选项卡上找到用户池的域前缀和区域值。

注意

Amazon Cognito idpresponse 端点不接受加密的 SAML 断言。

对于一些 SAML IdP,您还需要采用以下格式提供 SP urn/受众 URI/SP 实体 ID:

urn:amazon:cognito:sp:<yourUserPoolID>

您可以在 Amazon Cognito 控制台General settings(常规设置)选项卡上找到用户池 ID。

您还应配置 SAML IdP,以便为您的用户池中需要的任何属性提供属性值。例如,email 是用户池的典型必需属性。因此,SAML IdP 应在 SAML 断言中提供一个 email 值(声明)。

Amazon Cognito 用户池支持 SAML 2.0 与 POST 绑定端点联合。这使您的应用程序不必检索或分析 SAML 断言响应,因为用户池直接通过用户代理从 IdP 接收 SAML 响应。您的用户池代表您的应用程序充当服务提供商(SP)。Amazon Cognito 支持 SP 发起的单点登录(SSO),如 SAML V2.0 技术概览的第 5.1.2 部分中所述。

Amazon Cognito SAML 请求

对端点授权将用户定向到您的 IdP 登录页面时,Amazon Cognito 提供了用户在 POST 正文中发送的 SAML 请求。SAML 请求包含有关用户群体和 saml2/idpresponse 端点的信息。Amazon Cognito 不对 SAML 请求进行签名。

Amazon Cognito 对用户传递到 IdP 的注销端点的注销 请求进行签名。要对这些注销请求建立信任,您可以向 IdP 提供您在 Amazon Cognito 控制台 Sign-in experience(登录体验)选项卡中下载的用户群体 SAML 2.0 签名证书的副本。