2017-03-07 82 views
1

我使用WSO2 IS的Spring SAML擴展作爲IdP。目前,我在Spring XML配置中爲MetadataGenerator設置了entityBaseURL屬性。目前,由於entityBaseURL與服務器名稱匹配,所以這對於單個服務器來說工作得很好。因爲我有幾個環境(dev,test和UAT),所以我需要以編程方式設置entityBaseURL,因爲每個環境都有不同的服務器名稱,並且servername與entityBaseURL prop不匹配。爲每個環境重建WAR僞像是不可取的。我們將每個環境的配置保存在數據庫中。因此,可以在運行時讀取特定堆棧機器的特定設置和屬性。我想從我們的數據庫中讀取entityBaseURL屬性的servername並以編程方式進行設置。我應該用自己的課程替換MetadataGenerator嗎?我不清楚entityBaseURL屬性在哪裏初始化。Spring SAML擴展 - 以編程方式設置entityBaseURL

回答

1

我找到了解決這個問題的可行路徑。我最終擴展了MetadataGeneratorFilter類並覆蓋了getDefaultBaseURL方法。 getDefaultBaseURL方法的默認實現是使用HTTP請求中找到的屬性來計算值。我改變了這種行爲來進行數據庫查找並返回存儲在數據庫中的值。我可以在這裏選址很短,但這確實有效。我能夠驗證SAML AuthnRquest的AssertionConsumerServiceURL屬性是否已正確設置。生成的元數據也是正確的。

注意:entityBaseURL屬性仍然可以在Spring配置中手動設置。如果是,則不使用從getDefaultBaseURL方法返回的值。