2011-12-16 146 views
16

我正在編寫一個Spring Restful Web Services項目。我需要編寫安全的Web服務。對於安全我已經使用Spring Security + SSL,但是現在我需要一些安全加密和郵件簽名。我知道如何從代碼加密消息,但是我正在尋找一種機制來啓用自動加密/解密和消息簽名。Spring Restful Web Services的安全性

我一直在尋找不同的安全選擇,包括spring WSS和其他,但其中大部分都是針對SOAP的。有人可能會建議我一些更好的安全機制和相同的鏈接。

+6

也許我我錯過了一些東西,但是使用SSL有什麼問題?這將加密服務器和客戶端之間對web服務的請求/響應傳輸。 – 2011-12-16 12:55:10

+0

感謝楓,你是對的SSL。但是,還有什麼其他的安全性,你可能會建議我使它更安全的Web服務。 – 2011-12-17 05:44:11

回答

7

有多種方式來保護您的寧靜的網絡服務,不幸的是有很多鏈接提供信息來保護soap網站的服務,但隨着寧靜的日益普及,最重要的是找到一種方法來保護和查找管理您寧靜的Web服務會話的方式。所以爲了保證我的Spring MVC得到安穩的支持,你至少需要考慮三個方面:

1)認證。 - 對於身份驗證,可以使用Spring Security。
2)授權。 - 爲了授權請求,可以使用OAuth。
3)確保通信安全。 - SSL可用於保護通信信道。
4)加密 - 再次Oauth可以解決的目的
5)消息簽名。 - 再次Oauth可以解決這個目的

所以,爲了保證安靜的webservice spring security + OAuth可以使用。其他可以使用的安全機制是Http Basic Security和Digest Security。

這裏是一個很好的例子固定彈簧RESTful Web服務使用Spring Security: http://java.dzone.com/articles/securing-restful-web-service

此外,在使用OAuth一起使用Spring Security可以按照本教程:

Spring security with OAuth

4

你基本上有REST安全兩種模式:

  1. 加密,並在應用層面簽名請求/響應,並通過HTTP運行 。這涉及到大量的工作,因爲您需要在簽名前規範化所有數據,並確保客戶端/服務器 遵循完全相同的過程。這種方法在早期的 版本的亞馬遜網絡服務協議中被採用。

  2. 使用SSL(可能與客戶端證書)。這是首選的方法,因爲不需要重新發明輪子。 SSL加速器 可用,性能將顯着優於處理加密和簽名代碼中的 。

亞馬遜現在已經轉向使用SSL,您應該也這樣做。 This article給出了兩種方法的比較。

REST VS SOAP

您稱爲SOAP和WS-Security,其定義了一個協議進行加密,並在消息簽名(而不是傳輸)的水平。 WS-Security定義這種協議的原因是通過代理的SOA架構提供端到端的機密性,完整性和真實性。例如,您可以從服務A發送SOAP消息到服務B,服務B通過CD和E. SSL/TLS在傳輸級別工作,因此只會保護A和B之間的消息。但是,REST不適用於代理架構所以這種方法不適用於你的情況。