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

2023-12-26

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

user1 - cat1 - ROLE_USER

user1 - cat2 - ROLE_EDITOR

类别不是静态的。可以添加新的并删除旧的。使用 Spring Security 可以实现这一点吗?


从您的描述来看,Spring Security 为您提供的 RBAC 模型似乎还不够。您有 2 个选项可供选择。任何一个:

  1. 您可以通过实现自己的访问决策管理器来自定义 Spring Security(请参阅here http://docs.spring.io/autorepo/docs/spring-security/3.0.x/reference/authz-arch.html了解详情)或
  2. 您转向基于属性的访问控制(又名 ABAC,如 NIST 所解释的here http://csrc.nist.gov/projects/abac/)。在Spring中使用ABAC的方法是使用Java实现XACML https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml,可扩展访问控制标记语言。 XACML 为您提供了一个外部化的、基于策略和属性的授权框架。这意味着您可以定义策略,例如具有角色=经理的用户可以在类别=foo中执行操作=视图。您可以拥有任意数量的规则,并相应地组合/分解它们。

Java 的 XACML 有多种开源和供应商实现:

  • SunXACML
  • HerasAF
  • IBM
  • 公理学 http://www.axiomatics.com(免责声明:我工作的供应商)

如果您想了解有关 XACML 的更多信息,我建议您查看其维基百科 https://en.wikipedia.org/wiki/XACML页面以及我们的 YouTubechannel http://www.youtube.com/user/axiomaticsab有供应商中立的教程。

XACML 可能对您的用例来说太多了,但它仍然值得考虑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过上下文更改 Spring Security 角色? 的相关文章

随机推荐