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