6

有幾種不同的Web服務 - 使用的各種技術,如Java,.NET,Python,Perl以及未來可能更多 - 屬於不同的組織,以及訪問那些Web服務必須受到限制。多個Web服務的集中式身份驗證和授權

這個想法是有一箇中央認證和授權服務器,只負責授權訪問每個WS。

我正在尋找一個單一登錄系統,其中用戶使用身份驗證服務器進行一次身份驗證,並且被授權在有限的時間段內訪問網絡服務。

安全要求很高,所以設置用戶名/密碼是不夠的。

在快速搜索中,我發現了許多不同的解決方案和解決方案,但我不知道這個案例中最好的解決方案 - 一種技術獨立,安全可靠的解決方案。

回答

0

這不正是OpenID的用途嗎?

通過一切手段糾正我,如果我錯了。

+0

不,OpenID不完全是這個。 OpenID是「一個開放和分散的身份系統」。我們已經考慮過使用OpenID作爲系統的認證部分,但是我們也需要管理授權(使用ACL),OpenID對此沒有幫助。 此外,任何人都可以擁有OpenID - 例如,如果您有一個Gmail賬戶,您已經擁有一個 - 我們需要控制哪些人可以訪問系統。 – tsbnunes 2009-07-22 13:41:09

2

我們對該主題做了大量研究,也找不到合適的解決方案。 (一個近乎好的解決方案,但對於web服務不是那麼多,是http://www.atlassian.com/software/crowd/

因此,我們爲我們的WS應用程序(也是第三方應用程序)開發了一個sso和中央用戶管理系統,但它不是用於出售。

如果您測試解決方案,則應檢查系統的性能,特殊負載下的性能。一開始我們的系統慢了30倍。通常情況下,你會發現xml解析過程中的速度減慢以及你需要做的請求數量(通常你在將來有一個請求的時候至少有4個請求)。 (我們使用jmeter來測試它。)並且您應該設置故障切換系統,因爲您將使用sso創建單點故障。

2

無論如何,這個問題已經基本上由WS-Trust解決了,至少對於基於SOAP的Web服務來說。 WS-Trust是用於驗證和交換「身份驗證令牌」的定義良好的協議,可用於跨企業場景,其中包含基於WS-Federation的協議。

一個示例場景是讓客戶端從WS-Trust服務器請求令牌,然後將SOAP標頭中的該令牌包含到Web服務主機中。另一方面,在對主機的請求中包含一些簡單的<UsernameToken>之類的內容,並向WS-Trust服務器提供服務器端委派身份驗證。

對WS-Trust有很好的客戶端支持 - WCF支持開箱即用,各個廠商都擁有J2EE攔截器,用於JAX-RPC和JAX-WS Web服務。

儘管WS-Trust的重點在於身份驗證,但您可以使用關於何時發出或驗證接收到的令牌的邏輯來進行粗粒度授權。不要發佈/驗證令牌,並且訪問被有效拒絕。對Web服務的細粒度授權通常需要一些定製攔截器,這些攔截器是特定於供應商的。

我爲IBM Tivoli Security工作,我們在此空間中有一些產品。第一個是Tivoli Federated Identity Manager(TFIM)。一位同事和我自己寫了關於將TFIM與基於WSE的Web服務進行集成的this article,並且包括WS-Trust協議本身的概述。第二個產品是Tivoli安全策略管理器(TSPM),它實現了對Web服務的細粒度授權。

這些相同的協議有開源的實現,這是使用基於標準的解決方案的好處。我相信JBoss和WSO的實現可能有用。