如何使用 SP 密钥库 spring saml 中的证书

Posted

技术标签:

【中文标题】如何使用 SP 密钥库 spring saml 中的证书【英文标题】:How the certificate use from SP keystore spring saml 【发布时间】:2015-09-20 22:50:11 【问题描述】:

我目前正在实施 Spring SAMl 来配置我的 SP。我收到了来自 IDP 的元数据 XML,我将它放在元数据文件夹中。 1.现在启动时出现异常是没有配置IDP,所以发现这是由于证书无效。现在我只需将证书导入 samlKeystore.jks 并将 metadataTrustCheck = false 放入 ExtendedMetadataDelegate bean 中,这有助于我启动 SP 而没有任何错误,我正在获取重定向表单IDP 到 SP,我可以实现我所需要的。 2. 现在我刚刚删除了 IDP 提供的 Certificates 我保存在 samlKeystore.jks 并重新启动应用程序,然后 IDP 之间的通信也没有问题和SP。

我现在有一些需要帮助才能理解的问题。 从 IDP 提供给我的证书已导入到我的 samlKeystore.jks,这些证书是否有任何用途,因为响应带有 IDP 的签名和证书。为了验证响应,我们应该在响应中使用证书和签名。

我是否希望执行metadataTrustCheck = true 并更正 IDP 元数据,如果是的话,如何更正它,因为我有证书链。

【问题讨论】:

【参考方案1】:

您从 IDP 收到的元数据文档包含证书,IDP 将使用这些证书对将发送给您的 SP 的 SAML 消息进行数字签名。无需将这些导入到 samlKeystore.jks,因为它们已经存在于元数据中。

元数据文档本身也可能经过数字签名(以确保在它到达您之前没有人对其进行过修改)。现在metadataTrustCheck = true Spring SAML 将尝试验证此签名是否有效,为此它需要知道是否信任用于创建签名的证书。

因此,您需要与 Spring SAML 沟通您信任哪些证书来签署元数据文档 - 您可以通过将它们导入 samlKeystore.jks 来做到这一点。

如果您相信您拥有的元数据文档是正确的,只需禁用 metadataTrustCheck 并且不要将任何公共证书导入 samlKeystore - 只需依赖元数据文档本身中的内容即可。

【讨论】:

感谢弗拉迪!我收到的元数据是签名的,并且在将正确的证书安装到 samlKeystore.jks 之后,它就可以工作了。问题是我替换了元数据 XML 中提供给我的证书。

以上是关于如何使用 SP 密钥库 spring saml 中的证书的主要内容,如果未能解决你的问题,请参考以下文章

Spring SAML 示例:不支持 SSOCircle SHA256

spring security saml使用哪个密钥?

Spring saml - 在SP上启动登录时如何记住请求参数,并在IdP响应后处理它们

Spring SAML - 如何在 SP HTTP 请求上添加自定义字段?

如何在 Spring Security SAML 示例中配置 IDP 元数据和 SP 元数据?

使用 Spring Security saml 的 IDP 会话超时