如何保护restful webservices?

时间:2017-07-14 15:27:30

标签: java rest spring-security restful-authentication spring-rest

根据我的理解,网站和网络服务之间的基本区别是 - 网站供人类消费或访问,网络服务供机器使用。希望上述说法是正确的。虽然Web服务也可以被人类解释。

我有一堆休息服务,其中很少使用spring框架开发,很少使用Jersey框架。它们主要用于机器消耗 问题1)现在我如何保护这些服务 - 身份验证和授权。

回答上述部分问题 - 弹簧安全可能是一种可能的解决方案 在这里我遇到了一个问题 - 一个简单的场景是,如果用户已经通过身份验证,我不希望他在后续呼叫中再次进行身份验证。您可能会考虑像jsessionid这样的会话ID ...但是这些其他Web服务并没有绑定到任何Web应用程序......它们就像裸露的Web服务一样暴露出来。所以我不认为(或者至少不知道)会话管理机制是可能的。事实上,我不知道将使用哪个客户端来访问这些休息服务。 Web浏览器或专门的基于休息的客户端,如邮递员(在chrome上)或soap ui或其他东西。那么我如何确保只为用户提供一次身份验证挑战。

3 个答案:

答案 0 :(得分:0)

有一些很好的解决方案和博客可用于保障休息服务。您可以遵循两种机制:

  1. 基本身份验证:Http / Https具有基本身份验证,其中客户端传递已编码用户凭据的标头。

  2. 双因素身份验证:要求客户端在第一次通过安全服务器时获取访问密钥。然后,对于后续资源调用,让客户端传递访问密钥,您可以在其中检查它是否有效。您还可以为此访问密钥设置时间阈值。另外,为了避免拒绝服务攻击,请检查现时。

  3. 我希望这有帮助!

答案 1 :(得分:0)

对于我的观点,你可以开始为jersey和spring框架学习一点 OAuth2 和/或 basic auth 。 希望你能发现这些信息有用。

答案 2 :(得分:0)

对于其他计算机使用的服务,请使用SSL证书进行身份验证。每个服务器和客户端都有自己的证书,没有密码或令牌。这是关于setting up Tomcat to authenticate with certificates的问题。