spring-boot - 在 Oauth Spring 安全中为不同资源定义不同的范围和角色
问题描述
如何在 Spring Oauth 中定义不同的安全策略(客户端不同资源的不同范围)
我查看了OAUTH_CLIENT_DETAILS的表模式。
我们可以定义一个 RESOURCE_IDS 列表以及范围和角色列表。但是我需要对每个资源的访问进行更精细的控制。
例如 1. client1 在 [resource1] 上有范围 [user],但同时 client1 在 [resource2] 上有范围 [admin, user]。IAM AWS 中的相同想法。
有什么建议我们可以在 Spring Security 中配置或实现它吗?
解决方案
如何在范围名称中组合资源 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')")
推荐阅读
- javascript - Material UI - Expand Panel 不会缩小上面的 div
- javascript - 为什么在使用 Firebase 身份验证时内容一次只显示给一个用户?
- javascript - 反应组件未正确呈现
- jquery - jQuery为悬停功能选择子项NO TAG
- asp.net-core - 如何使用相同的数据运行多个单元测试
- javascript - if/else 语句只记录 if,而不是 else
- c# - WCF 使用 BasicHttpBinding 证书通过 http 和 https 公开服务仍然在浏览器中显示 NotSecure
- angular - 在视图Angular4中显示对象
- git - 推送后在远程服务器上看不到我的代码
- r - 从数据库中的多个变量中删除数据框中的行