通过REST服务进行Spring身份验证

时间:2014-07-24 10:54:57

标签: spring rest authentication

我有一个由REST API组成的Web应用程序,然后是另一个代表此API前端的应用程序。这两个应用程序都是使用Spring开发的。

目前我的REST api不安全,可以通过调用REST端点直接访问数据,而无需额外的安全信息。

我的前端确实有一个登录表单(我使用的是Spring Security),但是没有访问数据库(唯一的访问是通过REST端点)。因此,登录过程是通过AuthenticationProvider的扩展来完成的,该扩展使用用户和密码调用REST api,然后使用身份验证结果进行响应。在REST方面没有保留身份验证/授权,因为据我所知,该协议应该是无状态的。

问题是我需要将ACL合并到我的应用程序中,以便用户只能看到他有权查看的资源(即他创建的那些资源)。但鉴于我的身份验证过程发生在前端层(我将会话属性与用户信息保持在一起),我有两个主要问题:

  1. 如何保护我的REST频道?
  2. 如何在不明确传递每个API请求中的用户详细信息的情况下,如何知道哪个用户在每次通信时发出请求?这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

做无状态并制作两个单独的Web应用程序通常是矫枉过正。 我通常最终会做的是。

  1. 使我的RestAPI有状态,因为通常缩放不是问题,简单的表单身份验证就足够了。
  2. 在一个Web应用程序中组合Rest API / HTML Client。如果要保持模块化,可以创建一个Rest API模块,并将其作为JAR文件集成到Web应用程序的lib文件夹中。
  3. 这也是一些针对rest API的不同替代方案的线程。

    How to do authentication with a REST API right? (Browser + Native clients)