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

时间:2015-01-28 11:19:28

标签: spring certificate metadata saml spring-saml

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

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

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

  • 使用KeyInfo派生凭证成功验证签名
  • 尝试建立对KeyInfo派生凭证的信任
  • 提供的受信任名称为空或空,跳过名称评估
  • 尝试对不受信任的凭据进行PKIX路径验证:[subjectName =' O = novell,OU = accessManager,CN = test-signing']
  • 对于不受信任的凭据,PKIX路径构建失败:[subjectName =' O = novell,OU = accessManager,CN = test-signing']:无法找到所请求目标的有效证书路径
  • 无法通过签名凭证的PKIX验证建立签名信任
  • 无法建立对KeyInfo派生凭证的信任
  • 无法使用任何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)

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

此问题已修复。事实上有很多问题。我正在使用Spring SAML示例应用程序:

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