在SP(服务提供商)

时间:2016-11-11 08:43:53

标签: java spring-saml

我正在使用Spring SAML扩展来连接ping federate IDP服务器。我导出了ping federate IDP元数据xml并将其放入我们的应用程序(并在securityContext.xml文件中引用相同的文件)。现在,当我尝试启动我的应用程序时,弹出saml抛出异常:

Caused by: org.opensaml.saml2.metadata.provider.MetadataProviderException: Error filtering metadata from C:\Drive E\workspace\enigma_master\etc\saml\idp.xml
at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.processNonExpiredMetadata(AbstractReloadingMetadataProvider.java:399)
at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.processNewMetadata(AbstractReloadingMetadataProvider.java:355)
at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.refresh(AbstractReloadingMetadataProvider.java:261)
... 100 more
Caused by: org.opensaml.saml2.metadata.provider.FilterException: Signature trust establishment failed for metadata entry
at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.verifySignature(SignatureValidationFilter.java:327)
at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.processEntityDescriptor(SignatureValidationFilter.java:178)
at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.doFilter(SignatureValidationFilter.java:156)
at org.opensaml.saml2.metadata.provider.AbstractMetadataProvider.filterMetadata(AbstractMetadataProvider.java:493)
at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.processNonExpiredMetadata(AbstractReloadingMetadataProvider.java:395)
... 102 more

我在samlkeystore文件中导入了证书(标记<ds:X509Certificate>下的证书),但问题仍然存在。我用谷歌搜索了错误并按照建议:

  • 我尝试从idp xml文件中删除<ds:Signature>标记。
  • 通过在ExtendedMetadataDelegate bean中将属性metadataTrustCheck设置为false来禁用签名验证

以上为我工作的方法。但我不想修改/删除IDP xml文件中的标记,它应该按原样工作。请让我知道我在做什么错? 另外,我想知道元数据xml中<ds:Signature>标记的用法以及为什么即使在samlKeystore文件中导入证书后它也无法正常工作。每个子标记的含义是什么,例如<ds:SignedInfo><ds:CanonicalizationMethod><ds:SignatureMethod><ds:Reference><ds:Transform><ds:DigestMethod>,{{1} },<ds:DigestValue>

示例IDP元数据xml文件

<ds:SignatureValue>

2 个答案:

答案 0 :(得分:0)

此问题通常是由于缺少Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8

的安装造成的

同时仔细检查证书是否真正正确导入samlKeystore.jks

答案 1 :(得分:0)

我发布此邮件是为了以防万一。

我也遇到了这个问题,我添加了IDP的元数据文件并将其证书导入到我的应用程序密钥库中。但是仍然存在签名信任验证问题。我确实在Intellij中从IDP格式化了metadata.xml,这确实搞砸了。一旦我导入了他们的元数据文件而不进行格式化,一切就一切顺利了。