Class PolicyBasedAccessControlHandler
java.lang.Object
org.opends.server.api.AccessControlHandler<PolicyBasedAccessControlHandlerCfg>
org.opends.server.authorization.policy.PolicyBasedAccessControlHandler
public final class PolicyBasedAccessControlHandler
extends AccessControlHandler<PolicyBasedAccessControlHandlerCfg>
Provides coarse grained access control for all operations, regardless of whether they are destined for local or
proxy backends. This class is responsible for managing the global access control policy configuration. Access
control decisions are the responsibility of the
AccessController.
Implementation notes: this class provides two policy enforcement points. Firstly, it inserts itself in the global
router where it is able to intercept all requests before they are processed by the global router. Secondly, as a
side-effect of implementing the AccessControlHandler interface, it is also invoked at the local backend
layer, after the router. However, there is no additional access control performed.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanDiscloseInformation(Entry entry, Dn entryDN, Operation operation) Checks whether the ACIs prevent sending information about the provided entry, or entryDN if entry is null.voidPerforms any necessary finalization for the access control handler implementation.static AccessControllerReturns a new access controller which can be used for authorizing requests and their responses.voidinitializeAccessControlHandler(PolicyBasedAccessControlHandlerCfg configuration, ServerContext serverContext) Initializes the access control handler implementation based on the information in the provided configuration entry.booleanIndicates whether the provided control is allowed based on the access control configuration and the specified operation.booleanisAllowed(AddOperation addOperation) Indicates whether the provided add operation is allowed based on the access control configuration.booleanisAllowed(BindOperation bindOperation) Indicates whether the provided bind operation is allowed based on the access control configuration.booleanisAllowed(CompareOperation compareOperation) Indicates whether the provided compare operation is allowed based on the access control configuration.booleanisAllowed(DeleteOperation deleteOperation) Indicates whether the provided delete operation is allowed based on the access control configuration.booleanisAllowed(ExtendedOperation extendedOperation) Indicates whether the provided extended operation is allowed based on the access control configuration.booleanisAllowed(ModifyDnOperation modifyDnOperation) Indicates whether the provided modify DN operation is allowed based on the access control configuration.booleanisAllowed(ModifyOperation modifyOperation) Indicates whether the provided modify operation is allowed based on the access control configuration.booleanisAllowed(SearchOperation searchOperation) Indicates whether the provided search operation is allowed based on the access control configuration.booleanIndicates whether the provided operation search filter is allowed based on the access control configuration.booleanisConfigurationAcceptable(PolicyBasedAccessControlHandlerCfg configuration, List<LocalizableMessage> unacceptableReasons, ServerContext serverContext) Indicates whether the provided configuration is acceptable for this access control handler.booleanmayProxy(Entry proxyUser, Entry proxiedUser, Operation operation, ServerContext serverContext) Indicates if the specified proxy user entry can proxy, or act on the behalf of the specified proxied user entry.booleanmaySend(Dn dn, Operation operation, SearchResultReference searchReference) Indicates whether the provided search result reference may be sent to the client based on the access control configuration.booleanIndicates whether the provided search result entry may be sent to the client.Methods inherited from class org.opends.server.api.AccessControlHandler
filterEntry, skipAccessCheck
-
Constructor Details
-
PolicyBasedAccessControlHandler
public PolicyBasedAccessControlHandler()
-
-
Method Details
-
initializeAccessControlHandler
public void initializeAccessControlHandler(PolicyBasedAccessControlHandlerCfg configuration, ServerContext serverContext) throws ConfigException Description copied from class:AccessControlHandlerInitializes the access control handler implementation based on the information in the provided configuration entry.- Overrides:
initializeAccessControlHandlerin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
configuration- The configuration object that contains the information to use to initialize this access control handler.serverContext- the server context for this Directory Server instance.- Throws:
ConfigException- If an unrecoverable problem arises in the process of performing the initialization.
-
isConfigurationAcceptable
public boolean isConfigurationAcceptable(PolicyBasedAccessControlHandlerCfg configuration, List<LocalizableMessage> unacceptableReasons, ServerContext serverContext) Description copied from class:AccessControlHandlerIndicates whether the provided configuration is acceptable for this access control handler. It should be possible to call this method on an uninitialized access control handler instance in order to determine whether the handler would be able to use the provided configuration.- Overrides:
isConfigurationAcceptablein classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
configuration- The access control handler configuration for which to make the determination.unacceptableReasons- A list that may be used to hold the reasons that the provided configuration is not acceptable.serverContext- the server context for this Directory Server instance.- Returns:
trueif the provided configuration is acceptable for this access control handler, orfalseif not.
-
finalizeAccessControlHandler
public void finalizeAccessControlHandler()Description copied from class:AccessControlHandlerPerforms any necessary finalization for the access control handler implementation. This will be called just after the handler has been deregistered with the server but before it has been unloaded.- Overrides:
finalizeAccessControlHandlerin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>
-
getAccessController
Returns a new access controller which can be used for authorizing requests and their responses.- Returns:
- a new access controller;
- Throws:
LdapException- If the policy configuration is invalid for some reason.
-
canDiscloseInformation
Description copied from class:AccessControlHandlerChecks whether the ACIs prevent sending information about the provided entry, or entryDN if entry is null.- Overrides:
canDiscloseInformationin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
entry- the entry for which to check if ACIs prevent information disclosure, if null, then a fake entry will be created from the entryDN parameterentryDN- the entry dn for which to check if ACIs prevent information disclosure. Only used if entry is null.operation- the operation for which to check if ACIs prevent information disclosure- Returns:
- true if the information for this entry can be disclosed, false otherwise.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided add operation is allowed based on the access control configuration. This method should not alter the provided add operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
addOperation- The operation for which to make the determination.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided control is allowed based on the access control configuration and the specified operation. This method should not alter the provided operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
dn- A DN that can be used in the access determination.op- The operation to use in the determination.control- The control for which to make the determination.- Returns:
trueif the control should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided bind operation is allowed based on the access control configuration. This method should not alter the provided bind operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
bindOperation- The operation for which to make the determination.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided compare operation is allowed based on the access control configuration. This method should not alter the provided compare operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
compareOperation- The operation for which to make the determination.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided delete operation is allowed based on the access control configuration. This method should not alter the provided delete operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
deleteOperation- The operation for which to make the determination.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided extended operation is allowed based on the access control configuration. This method should not alter the provided extended operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
extendedOperation- The operation for which to make the determination.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided modify operation is allowed based on the access control configuration. This method should not alter the provided modify operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
modifyOperation- The operation for which to make the determination.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided modify DN operation is allowed based on the access control configuration. This method should not alter the provided modify DN operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
modifyDnOperation- The operation for which to make the determination.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided search operation is allowed based on the access control configuration. This method may only alter the provided search operation in order to add an opaque block of data to it that will be made available for use in determining whether matching search result entries or search result references may be allowed.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
searchOperation- The operation for which to make the determination.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
isAllowed
Description copied from class:AccessControlHandlerIndicates whether the provided operation search filter is allowed based on the access control configuration. This method should not alter the provided operation in any way.- Overrides:
isAllowedin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
operation- The operation for which to make the determination.entry- The entry for which to make the determination.filter- The filter to check access on.- Returns:
trueif the operation should be allowed by the access control configuration, orfalseif not.
-
maySend
Description copied from class:AccessControlHandlerIndicates whether the provided search result entry may be sent to the client. Implementations must not under any circumstances modify the search entry in any way.- Overrides:
maySendin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
operation- The operation currently being processed (this will usually be a search, but may be other types of operation when pre/post read controls are used).unfilteredEntry- The result entry before any attribute filtering.- Returns:
trueif the access control configuration allows the entry to be returned to the client, orfalseif not.
-
maySend
Description copied from class:AccessControlHandlerIndicates whether the provided search result reference may be sent to the client based on the access control configuration.- Overrides:
maySendin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
dn- A DN that can be used in the access determination.operation- The operation with which the provided reference is associated.searchReference- The search result reference for which to make the determination.- Returns:
trueif the access control configuration allows the reference to be returned to the client, orfalseif not.
-
mayProxy
public boolean mayProxy(Entry proxyUser, Entry proxiedUser, Operation operation, ServerContext serverContext) Description copied from class:AccessControlHandlerIndicates if the specified proxy user entry can proxy, or act on the behalf of the specified proxied user entry. The operation parameter is used in the evaluation.- Overrides:
mayProxyin classAccessControlHandler<PolicyBasedAccessControlHandlerCfg>- Parameters:
proxyUser- The entry to use as the proxy user.proxiedUser- The entry to be proxied by the proxy user.operation- The operation to use in the evaluation.serverContext- The server context.- Returns:
trueif the access control configuration allows the proxy user to proxy the proxied user, orfalseif not.
-