如何通过上下文更改Spring Security角色?

 鹰击长空1943 发布于 2023-02-14 05:04

我想知道是否可以根据选定的类别设置角色.在我们的应用程序中,有类别包含文章.现在我们有一个像这样的角色层次结构:ROLE_ADMIN > ROLE_EDITOR > ROLE_USER.问题是用户可能根据当前选择的类别拥有不同的角色:

user1 - cat1 - ROLE_USER

user1 - cat2 - ROLE_EDITOR

这些类别不是静态的.可以添加新的和旧的删除.是否有可能使用Spring Security实现这一目标?

1 个回答
  • 从您的描述中,听起来像Spring Security为您提供的RBAC模型是不够的.您有2个选项可供选择.或者:

      您可以通过实现自己的Access Decision Manager来定制Spring Security(有关详细信息,请参阅此处)或

      你转向基于属性的访问控制(也就是NIST 在这里解释的ABAC ).在Spring中使用ABAC的方法是使用XACML的Java实现,即可扩展访问控制标记语言.XACML为您提供了一个外化的,基于策略和属性的授权框架.这意味着您可以定义策略,例如具有role = manager的用户可以在category = foo中执行action = view.您可以拥有任意数量的规则,并相应地组合/计算它们.

    XACML for Java有几种开源和供应商实现:

    SunXACML

    HerasAF

    IBM

    Axiomatics(免责声明:我工作的供应商)

    如果您想了解有关XACML的更多信息,我建议您查看其维基百科页面以及包含供应商中立教程的YouTube 频道.

    XACML可能对您的用例来说太过分了,但仍然值得考虑.

    2023-02-14 05:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有