java - 授予 OAuth2 令牌时如何限制用户的范围?
问题描述
在 Spring Security OAuth2 中,我可以通过配置ClientDetails
. 但是,除了由客户端限制之外,我还想限制个人用户可用的范围;例如,用户应该只能admin.forceLogout
在持有ROLE_ADMIN
.
我不想像那样直接将用户权限映射到范围checkUserScopes
;相反,我想运行自定义逻辑来检查和修改与特定令牌授权关联的范围。最好的方法是什么?
我看到了两种可能性,看起来都不理想:
提供
TokenEnhancer
在颁发后修改令牌的 a。这似乎更多地用于包含附加信息,例如受众声明,而不是重写已经可用的范围。特别是,这在confirm_access
步骤之后运行。提供自定义
OAuth2RequestFactory
. 至少,这涉及复制大量安全敏感逻辑。覆盖checkUserScopes()
似乎是放置自定义策略的完美位置,但它是私有的,唯一的覆盖点是在整个createTokenRequest()
.
有没有更好的方法来进行这种“交叉”过滤,或者这两个选项?
解决方案
推荐阅读
- docker - gcp docker push - 权限被拒绝
- android - 颤振中的单信号错误:需要占位符替换,但没有值
- powershell - 插入电源时运行一个脚本,拔下电源时运行另一个脚本
- python - 当有多个不涉及时,无法以正确的方式纠正一个条件
- django - 对多对多关系使用自定义管理器?
- javascript - 将一些数组参数传递给 wasm
- snakemake - 有没有办法在蛇形工作流程中访问 --cores 参数?
- java - Java中的PrintService没有做任何事情
- c# - 使用 RSA 算法解密 AES 密钥
- python - xlsx 导入从时间 00:00:00 开始删除日期