We have a medium-sized business application, and we use Spring roles and security permissions (RBAC), with a large kludge, to enable and disable roles for specific instances, as well as rules hidden in SpEL in @PreAuthorize tags.
I think we actually implemented (not knowing that it is ABAC). XACML looks very complex and bloated, so I am not keen on the answer here:
How to change Spring security roles by context?
Has anyone done a small implementation of ABAC without XACML? I have hopes that would allow us to sort out the problems, as domain objects just do @PreAuthorize (WRITE) etc., and our authorization policy will be separated from it.
From what I read, the basic principle of ABAC is very simple. You have an action (very similar to resolution) and a mechanism for resolution if the current Principal has this permission for this object.
I know AccessDecisionVoter, which is roughly the right kind of interface, but I don't think it was designed to vote on permissions. However, implementing our authorization policy with examples of something like this seems very attractive.
Sorry for the incoherent question! I am mostly interested in ABAC, but would like to avoid brew at home, but was worried that XACML is a giant plane when we need Cessna.
spring-security rbac xacml abac
salk31
source share