我正在写一个Spring Restful Web Services Project。我需要编写安全的Web服务。对于安全性我已经在使用Spring Security + SSL,但是现在我需要一些安全性来进行加密和消息签名。我知道如何从代码加密消息,但我正在寻找一种机制来启用自动加密/解密和消息签名。
我一直在寻找安全性的不同替代方案,包括spring WSS和其他,但其中大多数都是针对SOAP的。有人可以建议我一些更好的安全机制和相同的链接。
答案 0 :(得分:7)
有多种方法可以保护您的宁静网络服务,不幸的是,有许多链接可以提供信息来保护肥皂网服务,但是随着人们越来越受欢迎,最重要的是找到一种方法来保护并找到一种方法管理您的restful Web服务的会话。 因此,为了保证我的Spring MVC得到安静的支持,你需要至少考虑三个方面
1)身份验证。 - 对于身份验证,可以使用Spring Security
2)授权。 - 对于授权请求,可以使用OAuth
3)确保通信安全。 - SSL可用于保护通信信道
4)加密 - 再次Oauth可以解决目的
5)消息签名。 - Oauth再次可以解决目的
因此,为了确保安全的网络服务,可以使用弹簧安全+ OAuth。可以使用的其他安全机制是Http Basic Security和Digest Security。
这是一个非常好的例子,可以确保弹簧安全的弹簧安全网络服务: http://java.dzone.com/articles/securing-restful-web-service
另外,为了将spring security与OAuth结合使用,您可以按照本教程进行操作:
答案 1 :(得分:4)
您基本上有两种REST安全模式:
在应用程序级别加密并签署请求/响应并运行 通过HTTP。这涉及到您需要的大量工作 在签名之前规范化所有数据并确保客户端/服务器 遵循完全相同的过程。这种方法很早就被采用了 亚马逊网络服务协议的版本。
使用SSL(可能使用客户端证书)。这是首选 接近,因为没有必要重新发明轮子。 SSL加速器 可用,性能将明显优于 处理加密并签署代码。
亚马逊现在已经开始使用SSL,你也应该这样做。 This article对这两种方法进行了很好的比较。
REST与SOAP
您提到了SOAP和WS-Security,它定义了在消息(而不是传输)级别进行加密和签名的协议。 WS-Security定义此类协议的原因是通过代理的SOA体系结构提供端到端的机密性,完整性和真实性。例如,您可以从服务A向服务B发送SOAP消息,该消息通过CD和E发送.SSL / TLS在传输级别工作,因此仅保护A和B之间的消息。但REST不适用于代理体系结构所以这种方法不适用于您的情况。