[英]spring-security decouple roles and permissions
我目前正在为一个Web应用程序开发一个spring-boot 2.0
REST
后端。 spring-boot
应用程序接收OAuth2
AccessTokens以进行身份验证,并具有特定于应用程序的授权角色。 现在,我想基于OAuth2
角色保护各种REST
端点和方法。 我正在寻找一种不会将我的代码直接耦合到角色的解决方案,而不是像@PreAuthorize("hasRole('ADMIN')")
。
除了授权之外, REST
端点还应返回自定义结果(例如,如果请求包含角色为'company_A_internal'的有效OAuth2
令牌,则响应应包含在'company_A'上过滤的结果集)。
到目前为止我已经完成了什么:
spring-security
的帮助下,基于OAuth2
令牌的身份验证 OAuth2
令牌角色映射到spring-security
GrantedAuthorities
以便SecurityContextHolder.getContext().getAuthentication().getAuthorities()
返回以前的角色 我在找什么:
根据角色(现在存储在GrantedAuthorities
), REST
端点应该由单独的机制保护。 我做了一些研究,发现了一篇非常有趣的文章 。
我想实现类似的东西(例如作为单独的roles_config.yml):
order_manager:
'/orders':
- 'GET'
- 'POST'
- 'PUT'
- 'DELETE'
order_editor:
'/orders':
- 'GET'
- 'POST'
- 'PUT'
order_inspector:
'/orders':
- 'GET'
之后我只需要在spring-boot
上下文中实现这样的东西:
@Secured
@RequestMapping("/orders")
public void updateOrder (Order order) {
Order updatedOrder = process(order);
return updatedOrder;
}
这将如何在spring-security
的背景下工作? 有没有可能的方法在我当前的设置之上实现这个?
我感谢任何建议和帮助,并乐意回答评论和进一步的问题。
您可以尝试https://github.com/vsfexperts/rbac 。 您必须配置从角色到权限的映射,并使用@Secured(“some_privilege”)注释您的端点。 请记住,这是静态的,并且不允许基于内容的安全性,例如对/ orders / 5的访问不会仅限于用户x,谁是5的所有者。它只会受到角色的限制,该角色具有用/ orders端点注释的特权(例如@Secured(“some_privilege”))。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.