Note: this component is designated "advanced", which means that objects of this type are not expected to be created or altered in most environments. If you believe that such a change is necessary, you may want to contact support in order to understand the potential impact of that change.
A DN Map constructs DN values from attributes and the DN of a source entry, and fixed text. It is used to construct the DN for an entry as well as values for attributes that store DNs such as isMemberOf.
A DN Maps includes a wild-card pattern for matching source DN values and a replacement value that uses fixed text, components of the matched source DN, and values of source entry attributes to construct a DN value.
The properties supported by this managed object are as follows:
Basic Properties: | Advanced Properties: |
---|---|
description | None |
from-dn-pattern | |
to-dn-pattern |
Description | A description for this DN Map |
Default Value | None |
Allowed Values | A string |
Multi-Valued | No |
Required | No |
Admin Action Required | None. Modification requires no further action |
Description | Specifies the DN pattern to match when determining whether this map applies to a specific source DN. If the provided bind DN matches this pattern, then the to-dn-pattern will be used to perform the mapping. If the provided bind DN does not match this pattern, then no mapping will be performed. This pattern can be used to extract individual RDN components that are used to construct the target DN value. The '*' wild-card will match a single RDN component and can be used any number of times. The '**' wild-card will match zero or more RDN components and can be used at most once. If a literal '*' is required in a DN then it must be escaped as '2A'. The wild-card values can be used in the to-dn-pattern attribute using "{}"s and their original index position in the pattern. For example, with the pattern '*,**,dc=com' and an input DN value of 'uid=jsmith,ou=people,dc=example,dc=com', '*' matches 'uid=jsmith' and '**' matches 'ou=people,dc=example'. In to-dn-pattern, '{1}' can be used to include 'uid=jsmith' and '{2}' can be used to include 'ou=people,dc=example' in the replacement value. If the source entry does not have a DN value, then '**' can be used to match the missing DN value. The target DN value must then be constructed exclusively from fixed text and attributes from the source entry. |
Default Value | None |
Allowed Values | DNs matching this pattern will be replaced with a DN value constructed by to-dn-pattern. |
Multi-Valued | No |
Required | Yes |
Admin Action Required | None. Modification requires no further action |
Description | Specifies a pattern for constructing the DN value using fixed text, DN components matching wild-card values in from-dn-pattern, and attribute values from the source entry. If a source DN matches the pattern specified in from-dn-pattern, then this pattern is used to construct the DN pattern. The text used in this DN pattern is substituted verbatim into the constructed pattern unless it is included in '{}'s. Values included in '{}' can either be wild-card DN components from the matched from-dn-pattern value, or they can be attribute values from the source entry. A numeric index is used to select which DN wild-card value to select from the matching DN. The left-most wild-card DN component is {1}, the next wild-card component to its right is {2}, and so on. Attributes are substituted using their source value (e.g. {uid} will select the uid attribute from the source entry). Attributes must have exactly one value to be used in the DN construction. If the source entry has no value or multiple values for the specified attribute, the DN construction will fail. Furthermore, a regular expression with a substitution pattern can be used to further manipulate an individual DN wild-card component or attribute value. The java.util.regex.Pattern and java.util.regex.Matcher classes are used to perform the substitution. The regular expression with replacement value uses the syntax '{attr-name:/regex/replacement/flags}'. 'attr-name' is either a DN substitution index such as '1' or an attribute name such as 'cn'. 'regex' is a regular expression using the syntax described in the java.util.regex.Pattern javadoc. The optional flags value can also be used to change how this regular expression is interpreted. 'replacement' is a replacement value that is passed to the java.util.regex.Matcher#replaceFirst or java.util.regex.Matcher#replaceAll method to perform the replacement. The 'g' (global) flag controls whether replaceFirst or replaceAll is called. 'flags' is an optional set of single character flags that control how the regular expression is interpreted and how the replacement is performed. The flags are:
To apply modifiers to the values extracted append ':' and then the name of the modifier to apply. For example, if attribute 'cn' is to be included in a constructed DN value then modifier 'dnEscape' could be specified resulting in 'cn={cn:dnEscape},dc=example,dc=com' or 'cn={cn:/regex/replacement/flags:dnEscape},dc=example,dc=com' if a regular expression is to be used. The modifiers are:
The 'from-dn-pattern' matching pattern for this example is '*,**,dc=example,dc=com' (the {1} value matches 'cn=John Smith' and the {2} value matches 'ou=people'). The 'to-dn-pattern' pattern is more complicated. It is 'uid={givenname:/^(.)(.*)/$1/s}{sn:/^(.)(.*)/$1/s}{eid},{2},o=example'. The employee's initials are extracted from the 'givenname' and 'sn' attributes. The '^(.).*' regular expression used for these attributes matches the entire value and stores the initial character in the $1 variable, which is used for the replacement (the 's' flag is used to guard against the unlikely event that the user's 'givenname' or 'sn' attribute includes a newline character). |
Default Value | None |
Allowed Values | The pattern to use to construct the DN value. |
Multi-Valued | No |
Required | Yes |
Admin Action Required | None. Modification requires no further action |
To list the configured DN Maps:
dsconfig list-dn-maps [--property {propertyName}] ...
To view the configuration for an existing DN Map:
dsconfig get-dn-map-prop --map-name {name} [--tab-delimited] [--script-friendly] [--property {propertyName}] ...
To update the configuration for an existing DN Map:
dsconfig set-dn-map-prop --map-name {name} (--set|--add|--remove) {propertyName}:{propertyValue} [(--set|--add|--remove) {propertyName}:{propertyValue}] ...
To create a new DN Map:
dsconfig create-dn-map --map-name {name} --set from-dn-pattern:{propertyValue} --set to-dn-pattern:{propertyValue} [--set {propertyName}:{propertyValue}] ...
To delete an existing DN Map:
dsconfig delete-dn-map --map-name {name}