我有几个关于如何使用Spring Security SAML扩展v1.0发布来处理SSL(HTTPS)连接的问题。Spring Security SAML - HTTPS连接
我使用扩展来开发SP。我正在使用的远程IDP具有HTTPS URL。我拥有root用户并在Tomcat使用的JRE cacerts密钥库中为该SSL证书颁发证书。 IDP的元数据通过HTTPMetadataProvider
加载得很好。在ExtendedMetadata我的SP的元数据,我有:
<property name="securityProfile" value="metaiop"/>
<property name="sslSecurityProfile" value="pkix"/>
当我打我的SP,我重定向到我的IDP就好了,我提供我的凭据。然后,IDP将我送回我的SP。但是我在这里得到一个错误 ERROR org.springframework.security.saml.trust.MetadataCredentialResolver PKIX path construction failed for untrusted credential
日志显示这是在SOAP消息建立之后发生的。我想我的SP正试图连接到我的IDP以获得工件解析。
在Spring SAML文档的第7.2.3节中,它说默认情况下,HTTPS元数据连接将使用Java的密钥库。我已经如上所述照顾了。但在第8.1.4节中,它表示直接的SSL/TLS连接(与HTTP-Artifact绑定一起使用)需要验证服务器提供的公钥,并且应该检索证书并将其作为通常的公钥导入密钥库。我假设这意味着在JKSKeyManager
中定义的SP的密钥库。当我将IDP中的SSL证书导入SP密钥库时,错误消失,一切正常。
第一个问题 这是处理这个问题的正确方法吗?工件解析可以通过HTTPS不使用JRE的cacerts密钥库?
第二个问题 如果我不导入证书到SP密钥存储和改变sslSecurityProfile
价值metaiop
,我还得到一个错误在同一点上,而是它说:SSL peer failed hostname validation for name: null
即使我设置sslHostnameVerification
到allowAll
。为什么会发生?
根据我对MetaIOP配置文件的理解,它在IDP的元数据中查找证书。由于该证书与SSL证书不同,因此失败。正确?
谢谢弗拉基米尔! – AndyB 2015-04-03 19:36:12
嘿Vladimír,任何想法为什么我得到这个错误在这里/ saml/SSO(后)一旦它从IDP回来? java.lang.NoClassDefFoundError:无法初始化类org.apache.commons.ssl.TrustMaterial – Gemasoft 2016-12-14 15:28:53