【问题标题】:Security for Spring Restful Web ServicesSpring Restful Web 服务的安全性
【发布时间】:2012-01-21 23:51:24
【问题描述】:

我正在编写一个 Spring Restful Web 服务项目。我需要编写安全的 Web 服务。对于安全性,我已经在使用 Spring Security+SSL,但是现在我需要一些 security 来进行 加密和消息签名。我知道如何从代码中加密消息,但是我正在寻找一种机制来启用自动加密/解密和消息签名。

我一直在寻找不同的安全替代方案,包括 spring WSS 和其他,但其中大多数是针对 SOAP 的。有人可以建议我一些更好的安全机制和相同的链接。

【问题讨论】:

  • 也许我遗漏了一些东西,但是使用 SSL 有什么问题?这将加密请求/响应在服务器和客户端之间对 Web 服务的传输。
  • 感谢 maple,您使用 SSL 是对的。但是,在安全方面还有什么其他的东西,你可以建议我让它成为一个更安全的网络服务。

标签: web-services spring-mvc spring-security security


【解决方案1】:

有多种方法可以保护您的 RESTful Web 服务,不幸的是,有许多链接提供了保护 Soap Web 服务的信息,但是随着 RESTful 越来越受欢迎,找到一种方法来保护并找到一种方法是非常必要的管理您的 RESTful Web 服务的会话。 因此,为了保护我的 Spring MVC 的安全支持,您至少需要考虑三个方面

1) 身份验证。 -- 对于身份验证,可以使用 Spring Security。
2) 授权。 -- 可以使用 OAuth 来授权请求​​。
3) 确保通信安全。 -- SSL 可用于保护通信通道。
4) 加密——再次Oauth可以解决目的
5) 消息签名。 -- 再次Oauth可以解决目的

因此,可以使用 spring security + OAuth 来保护一个安静的 web 服务。可以使用的其他安全机制是 Http Basic Security 和 Digest Security。

这是一个很好的例子,用 spring security 保护 spring restful webservice: http://java.dzone.com/articles/securing-restful-web-service

还可以将 Spring Security 与 OAuth 结合使用,您可以按照本教程进行操作:

Spring security with OAuth

【讨论】:

    【解决方案2】:

    您基本上有两种 REST 安全模式:

    1. 在应用程序级别对请求/响应进行加密和签名并运行 通过 HTTP。这涉及到您需要的大量工作 在签名之前规范化所有数据并确保客户端/服务器 遵循完全相同的过程。这种方法在早期被采用 亚马逊网络服务协议的版本。

    2. 使用 SSL(可能带有客户端证书)。这是首选 方法,因为没有必要重新发明轮子。 SSL 加速器 可用,性能将明显优于 处理加密并登录您的代码。

    亚马逊现在已经开始使用 SSL,您也应该这样做。 This article 很好地比较了这两种方法。

    REST 与 SOAP

    您提到了 SOAP 和 WS-Security,它们定义了用于在消息(而不是传输)级别进行加密和签名的协议。 WS-Security 定义这种协议的原因是为了通过代理 SOA 架构提供端到端的机密性、完整性和真实性。例如,您可以通过 CD 和 E 将 SOAP 消息从服务 A 发送到服务 B。SSL/TLS 在传输级别工作,因此只会保护 A 和 B 之间的消息。但是 REST 不适用于代理架构所以这种方法不适用于您的情况。

    【讨论】:

    • 感谢托比,但我正在寻找一个完整的安全包。
    • 没有“完整的安全包”之类的东西,您需要评估自己应用程序中的漏洞。然后,您需要进行风险评估,以确定您是否准备好接受风险或采取措施减轻风险。没有任何软件包可以为您做到这一点
    猜你喜欢
    • 2012-02-13
    • 2012-03-13
    • 2013-01-13
    • 2014-08-08
    • 2018-07-27
    • 2014-05-06
    • 2018-10-25
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多