2011-08-05 28 views
1

我正在開發一個使用Spring框架的Java並在JBoss AS上部署的Web服務。此Web服務需要身份驗證和授權以及安全解決方案,以便某些方法用戶A可以執行並且其他某個用戶B可以執行。在客戶端,將有一個應用程序調用Web服務,人們可以使用用戶帳戶A或B登錄。Web服務中的安全身份驗證

我一直在挖出Internet,搜索Web服務身份驗證,研究WS-Security但我所看到的只是使用WS-Security。 WS-Security的一般供應4種認證:

  • 的UsernameToken
  • X.509令牌
  • SAML令牌
  • Kerberos令牌

但所有這些事情通常是預先配置的,我發現沒有例子表明我應該在Web服務中提供登錄/註銷方法(通過使用有狀態的Web服務)。請注意,如果我們使用登錄方法,即使底層是SSL傳輸,也存在安全風險。

所以我的問題是:

  1. 我應該怎麼做才能滿足我的要求嗎?
  2. 如果使用UsernameToken或Kerberos令牌...並且我們爲每個用戶提供一些權限,即授權,那麼對於每個傳入請求,我們都必須獲取用戶信息並獲取其所有權限。這個過程似乎需要時間並降低系統的性能。你同意嗎?所以我猜這不推薦?

我會非常感謝你的回覆,並會爲任何合理的答案投票。

+0

沒有人有任何想法? – longbkit

回答

1
  1. 如果你的服務是點對點的話,ssl就足夠了。相互SSL(Mutual_authentication)廣泛用於客戶端身份驗證和authZ。

  2. 如果您就係統性能進行演唱會,請看SAML。 SAML是一個已簽名的XML文檔,其中包含用於客戶端的authN和authZ,這意味着您不需要在服務器上進行客戶端身份驗證和authZ循環。

+0

我的系統是端到端的解決方案。在客戶端,可能有許多用戶使用同一臺計算機,每臺計算機都有不同的權限。所以我認爲即使在互聯網上很少提及「登錄」方法也應該提供給客戶端。 – longbkit

2

你的情景反映了EBay Trading API's

基本上,它的工作原理如下。

  1. 提供一個INTIAL WS調用(Ebay的情況:FetchToken),這證實了用戶的身份,並返回授權密鑰(唯一鍵爲每個登錄的用戶)。將授權密鑰與用戶配置文件信息一起存儲在緩存/分佈式緩存中。
  2. 任何後續呼叫都要求客戶端將授權密鑰與呼叫數據一起傳遞。您將使用授權密鑰來獲取用戶配置文件信息。
  3. 提供註銷WS呼叫。這使授權密鑰無效。

爲安全起見,所有的WS調用都應該通過SSL進行。