Interface PrincipalManager
-
- All Known Implementing Classes:
PrincipalManagerImpl
public interface PrincipalManagerThis interface defines the principal manager which is the clients view on all principals known to the repository. Each principal manager is bound to a session and is restricted by the respective access control. The principal manager in addition provides basic search facilities.A
Principalis an object used to connect to any kind of security mechanism. Example for this are thelogin modulesthat use principals to process the login procedure.
A principal can be a member of aGroupPrincipal. A group is a principal itself and can therefore be a member of a group again.Please note the following security considerations that need to be respected when implementing the PrincipalManager: All principals returned by this manager as well as
GroupPrincipal.members()must respect access restrictions that may be present for theSessionthis manager has been built for. The same applies forgetGroupMembership(Principal).Since Jackrabbit 2.18, a new interface has been introduced to represent the concept of a group of principals:
GroupPrincipal, alongsidejava.security.acl.Groupwhich is deprecated to be deleted. Until the final deletion ofjava.security.acl.Group, the 2 interfaces will be used concurrently for backwards compatibility reasons. See JCR-4249 for more details.
-
-
Field Summary
Fields Modifier and Type Field Description static intSEARCH_TYPE_ALLFilter flag indicating that allPrincipals should be search irrespective whether they represent a group of Principals or not.static intSEARCH_TYPE_GROUPFilter flag indicating that onlyPrincipals that represent a group of Principals should be searched and returned.static intSEARCH_TYPE_NOT_GROUPFilter flag indicating that onlyPrincipals that do NOT represent a group should be searched and returned.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description @NotNull PrincipalIteratorfindPrincipals(@Nullable java.lang.String simpleFilter)Gets the principals matching a simple filter expression applied against theprincipal name.@NotNull PrincipalIteratorfindPrincipals(@Nullable java.lang.String simpleFilter, int searchType)Gets the principals matching a simple filter expression applied against theprincipal nameAND the specified search type.@NotNull java.security.PrincipalgetEveryone()Returns thePrincipalwhich is implicitly applied to every subject.@NotNull PrincipalIteratorgetGroupMembership(@NotNull java.security.Principal principal)Returns an iterator over all group principals for which the given principal is either direct or indirect member of.@Nullable java.security.PrincipalgetPrincipal(@NotNull java.lang.String principalName)Returns the principal with the given name if is known to this manager (with respect to the sessions access rights).@NotNull PrincipalIteratorgetPrincipals(int searchType)Returns allPrincipals matching the specified search type.booleanhasPrincipal(@NotNull java.lang.String principalName)Checks if the principal with the given name is known to this manager (in respect to the sessions access rights).
-
-
-
Field Detail
-
SEARCH_TYPE_NOT_GROUP
static final int SEARCH_TYPE_NOT_GROUP
Filter flag indicating that onlyPrincipals that do NOT represent a group should be searched and returned.- See Also:
- Constant Field Values
-
SEARCH_TYPE_GROUP
static final int SEARCH_TYPE_GROUP
Filter flag indicating that onlyPrincipals that represent a group of Principals should be searched and returned.- See Also:
- Constant Field Values
-
SEARCH_TYPE_ALL
static final int SEARCH_TYPE_ALL
Filter flag indicating that allPrincipals should be search irrespective whether they represent a group of Principals or not.- See Also:
- Constant Field Values
-
-
Method Detail
-
hasPrincipal
boolean hasPrincipal(@NotNull @NotNull java.lang.String principalName)Checks if the principal with the given name is known to this manager (in respect to the sessions access rights). If this method returnstruethen the following expression evaluates totrueas well:PrincipalManager.getPrincipal(name).getName().equals(name)- Parameters:
principalName- the name of the principal to check- Returns:
- return
trueif the principal with this name is known to this manager;falseotherwise.
-
getPrincipal
@Nullable @Nullable java.security.Principal getPrincipal(@NotNull @NotNull java.lang.String principalName)Returns the principal with the given name if is known to this manager (with respect to the sessions access rights). Please note that due to security reasons group principals will only reveal those members that are visible to the Session thisPrincipalManagerhas been built for.- Parameters:
principalName- the name of the principal to retrieve- Returns:
- return the requested principal or
nullif a principal with the given name does not exist or is not accessible for the editing session.
-
findPrincipals
@NotNull @NotNull PrincipalIterator findPrincipals(@Nullable @Nullable java.lang.String simpleFilter)
Gets the principals matching a simple filter expression applied against theprincipal name. TODO: define the filter expression.
An implementation may limit the number of principals returned. If there are no matching principals, an empty iterator is returned.- Parameters:
simpleFilter-- Returns:
- a
PrincipalIteratorover thePrincipals matching the given filter.
-
findPrincipals
@NotNull @NotNull PrincipalIterator findPrincipals(@Nullable @Nullable java.lang.String simpleFilter, int searchType)
Gets the principals matching a simple filter expression applied against theprincipal nameAND the specified search type. TODO: define the filter expression.
An implementation may limit the number of principals returned. If there are no matching principals, an empty iterator is returned.- Parameters:
simpleFilter-searchType- Any of the following constants:- Returns:
- a
PrincipalIteratorover thePrincipals matching the given filter and search type.
-
getPrincipals
@NotNull @NotNull PrincipalIterator getPrincipals(int searchType)
Returns allPrincipals matching the specified search type.- Parameters:
searchType- Any of the following constants:- Returns:
- a
PrincipalIteratorover all thePrincipals matching the given search type.
-
getGroupMembership
@NotNull @NotNull PrincipalIterator getGroupMembership(@NotNull @NotNull java.security.Principal principal)
Returns an iterator over all group principals for which the given principal is either direct or indirect member of.Example:
If Principal P is member of Group A, and Group A is member of Group B, this method will return Principal A and Principal B.- Parameters:
principal- the principal to return it's membership from.- Returns:
- an iterator returning all groups the given principal is member of.
-
getEveryone
@NotNull @NotNull java.security.Principal getEveryone()
Returns thePrincipalwhich is implicitly applied to every subject.- Returns:
- the 'everyone' principal
-
-