Spring Security SAML IdP 元数据证书和签名



我看过很多问题,包括 https://stackoverflow.com/a/25384924/1317559。我有 IdP 元数据和证书,但似乎无法获得 Spring,所以看看它。

  • 将证书添加到密钥库:keytool -importcert -alias adfssigning -keystore samlKeystore.jks -file certificate.crt
  • 在元数据中有多个证书(2 个不同的证书)和一个签名值。
  • 我尝试使用相同的keytool命令添加签名值,但它不是证书。
  • 我也尝试添加元数据中找到的 2 个证书。

启用了调试日志,这就是我得到的:

  • 使用密钥信息派生凭据成功验证签名
  • 尝试建立对 KeyInfo(关键信息)派生凭据的信任
  • 提供的受信任名称为 null 或空,跳过名称评估
  • 尝试对不受信任的凭据进行 PKIX 路径验证:[主题名称='O=novell,OU=accessManager,CN=测试签名']
  • 不受信任凭据的 PKIX 路径构造失败:[主题名称='O=novell,OU=访问管理器,CN=测试签名']:找不到到请求目标的有效证书路径
  • 无法通过签名凭据的 PKIX 验证建立签名信任
  • 无法建立对密钥信息派生凭据的信任
  • 未能使用任何 KeyInfo派生凭据验证签名和/或建立信任
  • PKIX 签名验证失败,无法解析有效且受信任的签名密钥
  • 元数据输入 http://idp.ppd.com/nidp/saml2/metadata 的签名信任建立失败
  • 从 http://idp.ppd.com/nidp/saml2/metadata 过滤元数据时出错org.opensaml.saml2.metadata.provider.FilterException: 元数据条目的签名信任建立失败at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.verifySignature(SignatureValidationFilter.java:312)

Spring SAML 手册在第 7.2.4 章中描述了元数据信任验证。一种选择是禁用信任检查,或手动从元数据中删除签名 XML。就像您发现的那样,要导入到 samlKeystore.jks 的证书是用于生成元数据签名的证书,而不是特定 SP 或 IDP 实体的签名/加密证书。

还值得注意的是:不要更改签名文件 - 当我重新格式化 ADFS 生成的单行代码时,发生在我身上。显然会更改文件的签名。

此问题

已修复。事实上,存在许多问题。我正在使用Spring SAML示例应用程序:

  • 需要将公共证书(签名后的第一个,在 idp 元数据中)添加到其他来源、安全性下的 samlKeystore.jks 中。
  • 密码是 nalle123 。
  • 不要在 securityContext.xml 文件中放置任何内容。

最新更新