我有幾個關於如何使用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