首页 文章

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

提问于
浏览
0

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

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

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

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

  • 如何保护我的REST Channels ?

  • 如何在不明确传递每个API请求中的用户详细信息的情况下,如何知道哪个用户在每次通信时发出请求?这有可能吗?

1 回答

  • 1

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

    • 使我的RestAPI有状态,因为通常缩放不是问题,简单的表单身份验证就足够了 .

    • 在一个Web应用程序中组合Rest API / HTML Client . 如果要保持模块化,可以创建一个Rest API模块,并将其作为JAR文件集成到Web应用程序的lib文件夹中 .

    这里还有一些针对rest API的不同替代方案的线程 .

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

相关问题