SAML签名和加密 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

SAML签名和加密

Amazon Cognito 支持登录和注销的签名SAML请求和加密SAML响应。用户池操作期间的所有加密操作都必须使用 Ama SAML zon Cognito 生成的 user-pool-provided 密钥生成签名和密文。目前,您无法将用户池配置为使用外部密钥签署请求或接受加密断言。

注意

您的用户池证书有效期为 10 年。Amazon Cognito 每年都会为您的用户池生成一次新的签名和加密证书。当您请求签名证书时,Amazon Cognito 会返回最新的证书,并使用最新的签名证书对请求进行签名。您的 IdP 可以使用任何未过期的用户池加密证书对SAML断言进行加密。您之前的证书在整个有效期内继续有效,并且公钥在不同的证书之间不会发生变化。作为最佳实践,请每年更新提供商配置中的证书。

接受来自你的 IdP 的加密SAML回复

Amazon Cognito 和您的 IdP 可以在用户登录和注SAML销时对响应进行保密。Amazon Cognito 会将RSA公私密钥对和证书分配给您在用户池中配置的每个外部SAML提供商。为用户池SAML提供者启用响应加密时,必须将证书上传到支持加密SAML响应的 IdP。在您的 SAML IdP 开始使用提供的密钥加密所有SAML断言之前,您与 IdP 的用户池连接无法正常运行。

以下是加密SAML登录流程的概述。

  1. 您的用户开始登录并选择他们的 SAML IdP。

  2. 您的用户池通过登录对端点授权请求将您的用户重定向到他们的 Id SAML P SAML。您的用户池可以选择在此请求中附上签名,该签名允许 IdP 进行完整性验证。当您想要签署SAML请求时,必须将您的 IdP 配置为接受您的用户池使用签名证书中的公钥签署的请求。

  3. I SAML dP 登录您的用户并生成响应。SAMLIdP 使用公钥对响应进行加密,并将您的用户重定向到您的用户池终端节点。/saml2/idpresponseIdP 必须按照 SAML 2.0 规范的定义对响应进行加密。有关更多信息,请参阅OASIS安全断Element <EncryptedAssertion>言标记语言的断言和协议 () SAML V2. 0。

  4. 您的用户池使用私钥解密SAML响应中的密文并登录您的用户。

重要

当您在用户池中为某个 SAML IdP 启用响应加密时,您的 IdP 必须使用该提供商特有的公钥对所有响应进行加密。Amazon Cognito 不接受来自您配置为支持加密的外部 SAML IdP 的未加密SAML响应。

用户池中的任何外部 SAML IdP 都可以支持响应加密,并且每个 IdP 都会收到自己的密钥对。

Amazon Web Services Management Console
配置SAML响应加密
  1. 创建用户池应用程序客户端和 SAML IdP。

  2. 创建或编辑SAML身份提供商时,在 “签署请求并加密响应” 下,选中标题为 “要求该提供商提供加密SAML断言” 的复选框。

  3. 在用户池的登录体验选项卡中,在联合身份提供商登录下,选择您的 I SAML dP,然后选择查看加密证书。

  4. 选择下载为.crt,然后将下载的文件提供给您的 Id SAML P。将您的 SAML IdP 配置为使用证书中的密钥SAML对响应进行加密。

API/CLI

配置SAML响应加密

使用CreateIdentityProviderUpdateIdentityProviderAPI请求的EncryptedResponses参数配置响应加密。以下是支持请求签ProviderDetails名的 IdP 示例。

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }

签署SAML请求

能够向您的 IdP 证明 SAML 2.0 请求的完整性是 Amazon Cogn SAML ito SP 发起的登录的一项安全优势。每个拥有域的用户池都会收到一个用户池 X.509 签名证书。使用此证书中的公钥,用户池将加密签名应用于您的用户池在用户选择 Id SAML P 时生成的注销请求。您可以选择将应用程序客户端配置为SAML登录请求。当您签署SAML请求时,您的 IdP 可以检查请求XML元数据中的签名是否与您提供的用户池证书中的公钥相匹配。

Amazon Web Services Management Console
配置SAML请求签名
  1. 创建用户池应用程序客户端和 SAML IdP。

  2. 创建或编辑SAML身份提供商时,在 “签署请求并加密响应” 下,选中标题为 “签署对该提供商的SAML请求” 的复选框。

  3. 在用户池的登录体验选项卡中,在联合身份提供商登录下,选择查看签名证书

  4. 选择下载为.crt,然后将下载的文件提供给您的 Id SAML P。配置您的 SAML IdP 以验证传入SAML请求的签名。

API/CLI

配置SAML请求签名

使用CreateIdentityProvider或请求的RequestSigningAlgorithm参数配置UpdateIdentityProviderAPI请求签名。以下是支持请求签ProviderDetails名的 IdP 示例。

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }