首页 > 解决方案 > 在 Oauth Spring 安全中为不同资源定义不同的范围和角色

问题描述

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

在此处输入图像描述

我查看了OAUTH_CLIENT_DETAILS的表模式。

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

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

有什么建议我们可以在 Spring Security 中配置或实现它吗?

标签: spring-bootspring-securityspring-security-oauth2spring-oauth2

解决方案


如何在范围名称中组合资源 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')")

推荐阅读