我們目前正在爲客戶開發一個應用程序。該項目有限制,我們只提供可部署的WAR文件。客戶提供的基礎設施,並不會有太大的偏差。Spring-Security + SAML:授權多個應用程序充當單個服務提供商
該應用程序是用Spring Boot,Spring Security和SAML開發的。當前版本是一個單一的單片WAR文件。
目前,由於多種原因(可維護性,部署,代碼質量等),我們正在將單個應用程序拆分爲單獨的應用程序。不幸的是,我們還不知道如何實現授權使用這些給出的限制:
基礎設施的制約:
- 應用程序將被部署在JBoss EAP 7.0
- 提供自定義身份提供由客戶執行
- 與IdP的通信必須使用SAML 2.0實施
自定義的IdP具有以下限制:
- 驗證是通過代理,這意味着只有通過驗證的用戶在可以提供
- 只有一個SP的元數據文件的應用程序來完成,因爲它鏈接到用戶數據庫。我們希望爲所有應用程序共享相同的用戶數據庫。
- 的SP元數據文件可以僅提供一個AssertionConsumerService地點
- 的AssertionConsumerService-位置是在元數據文件靜態定義的,並且不能在一個AuthnRequest
問題描述被重寫:
每個應用程序必須使用IdP授權才能接收角色和斷言。在當前(單片)部署中,這不成問題,因爲我們只需要一個AssertionConsumerService。使用新架構,每個應用程序都可以重定向到IdP,但IdP只能重定向到靜態配置的ACS。當只有一個ACS可能時,每個應用程序如何接收AuthnResponse?
任何想法?
是的,這聽起來像一個可能的解決方案。但是實施自己的IdP聽起來像很多工作。你知道任何現有的庫已經這樣做嗎? – Dave
我不知道有一個實現IdP代理的庫,但有一些項目/產品提供此功能。儘管如此,它還是一些額外的基礎設施組件,需要進行部署,維護和運行,但它是唯一基於標準的方法,我知道工作正常 –
我在調查同樣的問題時遇到了這個問題 - 我沒有嘗試過,但https: //github.com/OpenConext/OpenConext-idensys似乎是一個基於Java的SAML代理,可能會提供一種前進的方式。 –