我目前正在实施Spring SAMl来配置我的SP。我收到了IDP的元数据XML,我把它放在元数据文件夹中。
1.现在,在启动时我得到了Exception是没有配置IDP,所以发现它是由于证书无效。现在我只需将证书导入 samlKeystore.jks 并将metadataTrustCheck = false
放入 ExtendedMetadataDelegate bean中,这有助于我启动SP而不会出现任何错误,而且我正在调整重定向从IDP到SP,我可以实现我的需要
2.现在我刚刚删除了我在 samlKeystore.jks 中保存的IDP提供的证书,然后重新启动应用程序,IDP之间的通信也没有问题和SP。
我现在有一些需要帮助才能理解的查询。 提供给我的证书从我导入到我的 samlKeystore.jks 的IDP,这些都有用,因为响应带有来自IDP的签名和证书。为了验证响应,我们应该在响应中使用证书和签名。
我是否期望执行metadataTrustCheck = true
并更正IDP元数据,如果是,如何更正它,因为我有证书链。
答案 0 :(得分:7)
您从IDP收到的元数据文档包含IDP将用于对将向SP发送的SAML消息进行数字签名的证书。无需将这些导入到samlKeystore.jks,因为它们已经存在于元数据中。
元数据文档本身也可以进行数字签名(以确保没有人在它到达之前对其进行修改)。现在,当metadataTrustCheck = true
Spring SAML将尝试验证此签名是否有效时,为了做到这一点,它需要知道是否信任用于创建签名的证书。
因此,您需要向Spring SAML传达您信任的证书,以便签署元数据文档 - 您可以通过将它们导入samlKeystore.jks来实现。
如果您相信您拥有的元数据文档是正确的,只需禁用metadataTrustCheck
并且不要将任何公共证书导入samlKeystore - 只需依赖元数据文档本身的内容即可。