- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在为 Web 应用程序开发 spring-boot 2.0
REST
后端。 spring-boot
应用程序接收 OAuth2
AccessTokens 以使用应用程序特定角色进行身份验证以进行授权。现在我想根据 OAuth2
角色保护各种 REST
端点和方法。我正在寻找一种不将我的代码直接耦合到角色的解决方案,不是 @PreAuthorize("hasRole('ADMIN')")
。
除了授权之外,REST
端点还应返回自定义结果(例如,如果请求包含一个有效的 OAuth2
token ,角色为“company_A_internal”,响应应包含在“company_A”上过滤的结果集。
到目前为止我已经取得的成就:
spring-security
的帮助下基于 OAuth2
token 的身份验证OAuth2
token 角色映射到 spring-security
GrantedAuthorities
以便 SecurityContextHolder.getContext().getAuthentication( ).getAuthorities()
返回之前的角色我在找什么:
根据角色(现在存储在 GrantedAuthorities
中),REST
端点应由单独的机制保护。我做了一些研究,发现了一个非常有趣的 article .
我想实现与此类似的东西(例如作为单独的 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"))。
关于java - spring-security 解耦角色和权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51464344/
我是一名优秀的程序员,十分优秀!