【发布时间】:2014-07-24 10:54:56
【问题描述】:
我有一个由 REST API 组成的 Web 应用程序,然后是另一个代表此 API 前端的应用程序。这两个应用程序都是使用 Spring 开发的。
目前我的 REST api 不安全,可以通过调用 REST 端点直接访问数据,无需额外的安全信息。
我的前端确实有一个登录表单(我为此使用了 Spring Security),但没有访问数据库的权限(唯一的访问权限是通过 REST 端点)。因此登录过程是通过 AuthenticationProvider 的扩展来完成的,该扩展使用用户和密码调用 REST api,然后以身份验证结果进行响应。 REST 端不保留任何身份验证/授权,因为据我所知,该协议应该是无状态的。
问题是我需要将 ACL 合并到我的应用程序中,以便用户只能查看他有权查看的资源(即他创建的资源)。但鉴于我的身份验证过程发生在前端层(我在前端层保留了一个包含用户信息的会话属性),我有两个主要问题:
- 如何保护我的 REST 通道?
- 如何知道是哪个用户在每次通信中发出请求,而无需在每个 API 请求中显式传递用户详细信息?这甚至可能吗?
【问题讨论】:
标签: spring rest authentication