Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过REST服务的Spring身份验证_Spring_Rest_Authentication - Fatal编程技术网

通过REST服务的Spring身份验证

通过REST服务的Spring身份验证,spring,rest,authentication,Spring,Rest,Authentication,我有一个Webapp,它由一个restapi组成,然后是另一个代表这个API前端的应用。这两个应用程序都是使用Spring开发的 目前我的RESTAPI不安全,可以通过调用REST端点直接访问数据,而无需额外的安全信息 我的前端确实有一个登录表单(我正在使用Spring Security),但没有访问数据库的权限(唯一的访问权限是通过REST端点)。因此,登录过程是通过AuthenticationProvider的扩展完成的,该扩展使用用户和密码调用REST api,然后使用身份验证结果进行响应

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

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

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

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

  • 如何保护我的REST频道
  • 在每次通信中,如果不在每个API请求中显式传递userdetails,我如何知道哪个用户在发出请求?这可能吗

  • 把它变成无状态和两个独立的web应用程序通常是过分的。 我通常最后做的是

  • 使我的RestAPI有状态,因为通常伸缩不是问题,简单的表单身份验证就足够了
  • 将Rest API/HTML客户端组合到一个Web应用程序中。如果您想保持模块化,可以创建一个RESTAPI模块,并将其作为JAR文件集成到web应用程序的lib文件夹中
  • 这里还有一些线程,它为RESTAPI提供了不同的替代方案