我有一个通过 REST 公开的 API,我正在考虑在哪里设置权限限制。
我读过有一个关于保护服务层的最佳实践,因为它是做工作的那个,你不知道它会在哪里被调用,但我不确定关于 WS 的最佳实践是什么层。
我的一个想法是,我需要在服务层有一个非常细粒度的授权模型,在 WS 层有一个非常粗粒度的授权模型,以尽量减少违反 DRY 原则,但仍然有一些概念纵深防御。
例子:
对于Users
资源,有 aUserWS
和 a UserService
。管理员可以创建/更新/删除用户,用户可以阅读其他用户的信息。
假设UserWS
绑定到%root%/users
我将intercept-url
为该 url定义一个ROLE_USER
权限,它只是说您必须是用户才能到达那里,但服务层本身将指定相关方法的特定权限。
其他选项包括:
对服务和 WS
-Pro 设置相同的授权要求-您将尽可能早地过滤掉入侵者(如果您使用的是 spring mvc,则保存例如参数转换)-
重复配置是一种维护问题并且容易出错=>安全问题
如果来自 WS Con,请尽快将授权要求仅放在 WS -Pro-Filter 上
-可能从不同的上下文中使用服务层仅在服务上列出授权要求-
Pro- No Duplication
Con- 允许“直言不讳”的无能请求到达服务层的开销
非常感谢有关选项的任何反馈