2014-12-05 88 views
1

我們需要配置兩個不同的IdP。到目前爲止這麼好,但問題是我們需要爲其中一個IdP配置forceAuthN。另一件事是一個IdP使用HTTP-Artifact來綁定SSO,而另一個使用HTTP-POST。因此,我們似乎需要兩個不同的SP元數據。使用Spring Security生成兩個不同的SP元數據SAML'

什麼是最好的方法?如果我們自己編寫元數據,我想這不是問題,但我們希望Spring Security SAML能夠生成這些元數據。

我們試圖通過擴展MetadataGeneratorFilter類來配置兩個不同的metadataGeneratorFilters。現在的問題是,只對SP的一個元數據是建立,而原因僅僅是在processMetadataInitialization方法如下一行:

if (manager.getHostedSPName() == null) { ... 

的MetadataManager類可以,因爲據我所知,只持有一個hostedSPName ,不是兩個。

回答

1

您不需要單獨的元數據來控制選擇綁定或forceAuthN。這些設置在發送給IDP的AuthnRequest中配置。只要確保您的SP元數據包含HTTP-Artifact和HTTP-POST端點(默認情況下就是這樣)。

AuthnRequest設置使用WebSSOProfileOptions的實例進行配置。根據您要連接的IDP以及您的要求,擴展類SAMLEntryPoint,覆蓋方法getProfileOptions並返回正確配置的WebSSOProfileOptions。詳情請見manual

forceAuthN in AuthnRequest使用屬性forceAuthn進行配置。您可以選擇IDP使用哪個綁定(工件與後期)將SAML消息傳遞迴屬性爲assertionConsumerIndex的SP。

在一個實例中,不能使用自動MetadataGenerator生成兩組不同的元數據集。爲了做到這一點,你可以使用pre-configured metadata - 但我認爲你的情況並不需要。

+0

感謝您的建議,弗拉基米爾。它完美的作品。 – 2014-12-10 12:18:00