public final class Aci extends Object implements Comparable<Aci>
Modifier and Type | Field and Description |
---|---|
static int |
ACI_ADD
ACI_ADD is used to set the container rights for a LDAP add operation.
|
static int |
ACI_EXT_OP
Used by the extended operation access check.
|
static int |
ACI_PROXY
ACI_PROXY is used for the PROXY right.
|
static int |
ACI_SELF
ACI_SELF is used for the SELFWRITE right.
|
static int |
ACI_SKIP_PROXY_CHECK
ACI_SKIP_PROXY_CHECK is used to bypass the proxy access check.
|
static String |
ACI_STATEMENT_SEPARATOR
Regular expression matching a ACL statement separator.
|
static int |
ACI_WRITE_DELETE
ACI_WRITE_DELETE is used by the LDAP modify operation.
|
static String |
ALL_OP_ATTRS_WILD_CARD
Regular expression the matches "+".
|
static String |
ALL_USER_ATTRS_WILD_CARD
Regular expression the matches "*".
|
static String |
LDAP_URL
Regular expression matching a LDAP URL.
|
static String |
NULL_LDAP_URL
String used to check for NULL ldap URL.
|
static String |
SUPPORTED_VERSION
Version that we support.
|
static String |
WORD_GROUP
Regular expression matching a word group.
|
static String |
ZERO_OR_MORE_WHITESPACE
Regular expression matching a white space.
|
static String |
ZERO_OR_MORE_WHITESPACE_START_PATTERN
Regular expression matching a white space at the start of a pattern.
|
Modifier and Type | Method and Description |
---|---|
int |
compareTo(Aci aci)
Compares this Aci with the provided Aci based on a natural order.
|
static Aci |
decode(String aciString,
Dn dn)
Decode an ACI byte string.
|
static Set<String> |
decodeOID(String expr,
LocalizableMessage msg)
Decode an OIDs expression string.
|
Dn |
getDN()
Return the DN of the entry containing the ACI.
|
String |
getName()
Returns the name string of this ACI.
|
AciTargets |
getTargets()
Returns the targets of the ACI.
|
boolean |
hasAccessType(org.opends.server.authorization.dseecompat.EnumAccessType accessType)
Re-direct has access type to the body's hasAccessType method.
|
boolean |
hasRights(int rights)
Check if the body of the ACI matches the rights specified.
|
boolean |
isApplicable(AciTargetMatchContext matchCtx)
Test if the given ACI is applicable using the target match information provided.
|
String |
toString()
Return the string representation of the ACI.
|
public static final String SUPPORTED_VERSION
public static final String WORD_GROUP
public static final String ZERO_OR_MORE_WHITESPACE
public static final String ZERO_OR_MORE_WHITESPACE_START_PATTERN
public static final String ACI_STATEMENT_SEPARATOR
public static final String LDAP_URL
public static final String NULL_LDAP_URL
public static final String ALL_USER_ATTRS_WILD_CARD
public static final String ALL_OP_ATTRS_WILD_CARD
public static final int ACI_ADD
public static final int ACI_SELF
public static final int ACI_PROXY
public static final int ACI_WRITE_DELETE
public static final int ACI_SKIP_PROXY_CHECK
public static final int ACI_EXT_OP
public static Aci decode(String aciString, Dn dn) throws AciException
aciString
- The ACI string.dn
- DN of the ACI entry.AciException
- If the parsing of the ACI string fails.public String toString()
public AciTargets getTargets()
public Dn getDN()
public boolean isApplicable(AciTargetMatchContext matchCtx)
These two base decision on the resource entry DN:
1. target - checked in isTargetApplicable.
2. targetscope - checked in isTargetApplicable.
These three base decision on resource entry attributes:
3. targetfilter - checked in isTargetFilterApplicable.
4. targetattr - checked in isTargetAttrApplicable.
5. targattrfilters - checked in isTargAttrFiltersApplicable.
These two base decisions on a resource entry built by the ACI handler that only contains a DN:
6. targetcontrol - check in isTargetControlApplicable.
7. extop - check in isExtOpApplicable.
Six and seven are specific to the check being done: targetcontrol when a control is being evaluated and extop when an extended operation is evaluated. None of the attribute based keywords should be checked when a control or extended op is being evaluated, because one of those attribute keywords rule might incorrectly make an ACI applicable that shouldn't be. This can happen by erroneously basing their decision on the ACI handler generated stub resource entry. For example, a "(targetattr != userpassword)" rule would match the generated stub resource entry, even though a control or extended op might be denied. What is allowed is the target and targetscope keywords, since the DN is known, so they are checked along with the correct method for the access check (isTargetControlApplicable for control and isTExtOpApplicable for extended operations). See comments in code where these checks are done.
matchCtx
- The target matching context containing all the info needed to match ACI targets.public boolean hasRights(int rights)
rights
- Bit mask representing the rights to match.public boolean hasAccessType(org.opends.server.authorization.dseecompat.EnumAccessType accessType)
accessType
- The access type to match.public String getName()
public static Set<String> decodeOID(String expr, LocalizableMessage msg) throws AciException
expr
- A string representing the OID expression.msg
- A message to be used if there is an exception.AciException
- If the specified expression string is invalid.public int compareTo(Aci aci)
compareTo
in interface Comparable<Aci>
aci
- The Aci against which to compare this Aci.Copyright 2010-2022 ForgeRock AS.