【问题标题】:Spring authentication through REST Service通过 REST 服务进行 Spring 身份验证
【发布时间】:2014-07-24 10:54:56
【问题描述】:

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

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

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

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

  1. 如何保护我的 REST 通道?
  2. 如何知道是哪个用户在每次通信中发出请求,而无需在每个 API 请求中显式传递用户详细信息?这甚至可能吗?

【问题讨论】:

    标签: spring rest authentication


    【解决方案1】:

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

    1. 使我的 RestAPI 有状态,因为通常缩放不是问题,简单的表单身份验证就足够了。
    2. 在一个 Web 应用程序中组合一个 Rest API/HTML 客户端。如果您想保持模块化,您可以创建一个 Rest API 模块并将其作为 JAR 文件集成到您的 Web 应用程序的 lib 文件夹中。

    这里还有一些线程,它通过不同的替代 API 替代。

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

    【讨论】:

      猜你喜欢
      • 2012-11-16
      • 2014-12-25
      • 2023-04-01
      • 2015-04-01
      • 2012-02-10
      • 1970-01-01
      • 2012-06-05
      • 2016-01-27
      相关资源
      最近更新 更多