【发布时间】:2015-11-07 09:32:25
【问题描述】:
我们有一个中型业务应用程序,我们大量使用 Spring Security 角色和权限 (RBAC),并大量使用为某些实例打开和关闭角色以及隐藏在 SpEL 中的规则 在@PreAuthorize 标签内。
我认为我们实际上已经实现了(不知道是 ABAC)。 XACML 看起来非常复杂和臃肿,所以我不热衷于这里的答案:
How to change Spring Security roles by context?
有没有人在没有 XACML 的情况下完成了轻量级的 ABAC 实现?我希望这能让我们分离关注点,因为域对象只是做@PreAuthorize(WRITE) 等,我们的授权策略将与之分离。
根据我的阅读,ABAC 的基本原理非常简单。如果当前 Principal 对给定的 Subject 具有该权限,则您有一个 Action(非常类似于 Permission)和一个解决机制。
我知道AccessDecisionVoter 大致是正确的界面类型,但我认为它不是用于对权限进行投票。然而,用类似的实例来实施我们的授权政策似乎非常有吸引力。
抱歉这个漫无边际的问题!基本上我对 ABAC 很感兴趣,但想避免自制,但担心当我们需要 Cessna 时 XACML 是大型喷气式飞机。
【问题讨论】:
-
是什么让您认为西飞是拖拉机的车轮?实现起来很简单
-
Spring Security 和 XACML 通过 Axiomatics spring 插件直接集成
-
嗨,David,查看 XACML 源代码非常冗长和复杂。我玩过 Java 中的规则是什么样子的,它很简单,我们已经具备了这种技能,它是编译时检查的……而且 Axiomatics 似乎是 XACML 上唯一真正活跃的工作。我可以想象 XACML/Axiomatics 对大型企业有好处,但那不是我们。抱歉,“拖拉机车轮”判断错误。当我们需要塞斯纳时,大型喷气机?我将编辑我的问题。
标签: spring-security rbac xacml abac