2011-12-16 136 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不适用于代理架构所以这种方法不适用于你的情况。