我们有一个中等规模的商业应用程序,我们大量使用Spring Security角色和权限(RBAC)来为某些实例打开和关闭角色以及隐藏在@PreAuthorize标记内的SpEL中的规则.
我认为我们实际实施了什么(不知道它是ABAC).XACML看起来非常复杂和臃肿,所以我不喜欢这里的答案:
有没有人在没有XACML的情况下完成了轻量级的ABAC实施?我希望能够让我们分离关注点,因为域对象只是做@PreAuthorize(WRITE)等,我们的授权策略将与它分离.
从我读过的内容来看,ABAC的基本原理非常简单.您有一个Action(非常像Permission)和一种机制来解决当前Principal是否具有给定Subject的权限.
我知道AccessDecisionVoter大致是正确的接口类型,但我不认为它是用于对权限进行投票.然而,实施我们的授权政策与这样的事件似乎非常有吸引力.
抱歉这个漫无边际的问题!基本上我对ABAC很感兴趣,但我想避免家酿,但担心当我们需要Cessna时XACML是一架大型喷气式飞机.