I am trying to understand the way in which the DefaultAccessControlManager works within Sling. I 'think' this is the default AccessControManager that is active when Sling is built and would like to use it.

If my understanding is correct, a set of ACE's is constructed based the full set of ACE's from the ACL of the node in question, and all parent nodes. This set is filtered by the set of principals held by the user (connected to the session), and any restriction filteres to control/limit inheritance of ACE's. The filtered set is compiled into a CompiledPermission set for the node in question (which is cached with the session), and privilages are evaluated against that compiled permission set.

If I have that correct, does that mean that all Principal(s) for the user must be known *before* the ACL is constructed, and, in the default implementation of the AccessControlManager in Jackrabbit its not possible to have Principal(s), that are given to the user on request, or from a performance point of view a massive set of principals (ie resolve all possible Principals in advance)
?

Ian

Reply via email to