在Oauth Spring安全性中为不同的资源定义不同的范围和角色

时间:2018-05-09 04:02:13

标签: spring-boot spring-security spring-security-oauth2 spring-oauth2

如何在Spring Oauth中定义不同的安全策略(客户端不同资源的不同范围)

enter image description here

我查看了 OAUTH_CLIENT_DETAILS 的表格架构。

我们可以定义RESOURCE_IDS列表以及范围和角色列表。但我需要对每个资源的访问进行更细粒度的控制。

例如 1. client1在[resource1]上具有范围[user],但同时client1在[resource2]上具有范围[admin,user]。 IAM AWS中的相同想法。

我们如何在spring security中配置或实现它?

1 个答案:

答案 0 :(得分:0)

如何在范围名称中组合资源ID。然后,作用域类似于RESOURCE1.user,RESOURCE2.admin,RESOURCE2.user,RESOURCE2.admin。例如,如果您的资源是账户api和贷款api,那么范围将类似于user-api.user,user-api.admin,loan-api.user,loan-api.admin等。

然后从资源服务器控制器端使用

@PreAuthorize("#oauth2.hasScope('user-api.user')")