Spring Security是否可以保护服务层,Web服务层或两者?

Ittai:

我有一个通过REST公开的API,并且正在考虑将权限限制放在何处。
我已经读到,有一种关于保护服务层的最佳实践,因为它是完成工作的那一层,您不知道将在何处调用它,但是我不确定关于WS的最佳实践是什么。层。
我的一个想法是,我需要在服务层上有一个非常细粒度的授权模型,在WS层上有一个非常粗粒度的授权模型,这样一方面可以最大程度地减少破坏DRY的原理,但仍然需要注意以下几点:纵深防御。

例:

对于Users资源,有一个UserWS和一个UserService管理员可以创建/更新/删除用户,而用户可以阅读有关其他用户的信息。
假定UserWS绑定到,%root%/users我将为intercept-url具有该ROLE_USER权限的URL 定义一个,该权限仅表示您必须是用户才能到达那里,但是服务层本身将为相关方法指定特定的权限。

其他选项是:

  • 在服务和WS
    -Pro 上都设置相同的授权要求- 您将尽早过滤掉入侵者(如果使用spring mvc,则保存例如参数的转换)
    -配置重复是一项维护问题,容易出错=>安全问题


  • 如果来自WS Con来,则仅将授权要求尽快放在WS -Pro-Filter上
    。服务层可能在不同的上下文中使用

  • 仅在服务上授权授权要求-
    禁止重复复制
    -允许“直截了当”的无效请求到达服务层的开销

非常感谢您对选项的任何反馈

诺姆:

Ittai,在WS和Service层使用完全相同的安全性机制被认为是在重复您自己-且需要在这两个级别进行维护。在WS层上没有任何安全性是一件坏事-因为您实际上让任何人都可以进入您的系统(即使您稍后再阻止他们-许多人也认为这是一件坏事)。简而言之,我认为您应该将两者混为一谈-在WS层使用一种非常粗糙的机制,在服务层使用一种非常强大的机制,这就是您不会重复自己并且不必在两个地方都维护代码的方式(因为不是相同的安全级别); 这样您就可以尽快过滤掉规模较小的用户,但仍应将其放置在很高的安全级别。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Spring应用程序中将服务层与Web层分开

使用Spring Security获取服务层中的登录用户

在服务层中进行验证时测试Web层-Spring Boot测试

Spring 中的无状态服务层

Spring Rest端点和服务层分离

Spring服务层中的意外行为

Spring服务和存储库层约定

从Android调用受Spring Security保护的REST Web服务

如何使用Spring Security保护Grails Web服务

Spring MVC:服务层是否应返回特定于操作的DTO?

在Web服务和业务层(Spring,tomcat)之间传递身份验证信息

在Spring Boot中没有Web或持久层时,是否可以测试嵌套对象?

单元测试Spring Boot应用程序服务层

使用构造函数注入使用 Mockito/Spring 测试服务层

使用Spring从服务层启动新线程的正确方法

Spring安全注释在服务层上不起作用

Spring Roo vs Appfuse生成服务/ dao层

如何在Spring Framework中实现通用服务层类?

如何使用JUnit在Spring Boot中测试服务层的代码?

如何在服务层中处理Spring JPA版本

Spring MVC-如何创建适当的服务层?

在Spring Java中减少服务层和DAO

Spring Jdbc + Wildfly 没有@AutoWired 服务层

使用 SpringMockk 进行 Spring Boot 服务层测试

将Web服务直接公开给Web客户端还是在两者之间保持薄服务器端脚本层?

我应该编写控制器或服务层或两者的单元测试吗?

dao 服务层和控制器层中的 Spring MVC Transactional

Spring MVC与Web应用程序中的服务,控制器和数据访问层有何关系?

使用Spring Security在入口点后面保护微服务