The root point of the tree is represented by a special entry whose distinguished name is called the directory suffix. An important part of your directory tree design will be selecting this DN. (This topic is discussed in the next section.)
Note that your directory service can include multiple directory suffixes. Each directory suffix can be considered to represent a unique tree. Existing about these directory suffixes is a special entry called the Root Directory Server Specific Entry (DSE). The root DSE is a concept borrowed from X.500. The root DSE is a special entry that exists above the root entries in your directory service's various directory trees. It is represented by the null string (literally ""
), and it contains attributes specific to the directory server instance.
Multiple Suffixes
Each suffix that you use with your directory service represents a unique directory tree. There are two ways that you can include multiple trees in your directory service. The first is to physically include the individual trees in the database(s) served by your directory server.
Smart referrals are described in Chapter 8, "Planning Referrals."
Planning Your Directory Suffix(es)
When you deploy a Netscape Directory Server, you will automatically have multiple suffixes defined for your directory. Most of these are used internally by the directory server and they require little or no planning on your part. These include the suffix for the machine data area, the suffix for the change log database (if configured), and the suffix for your directory schema. For more information on these standard directory trees, see the Netscape Directory Server Administrator's Guide.
Of particular importance to planning your directory tree is determining which suffix(es) you will use to store your directory data. In almost all circumstances, you should use only one suffix for data storage. However, in some specialized cases, such as for an extranet or for Internet Service Providers, multiple suffixes may be required to fully support your directory service.
In either case, the criteria for selecting a directory suffix is the same whether you will use one or 50 suffixes for your directory.
Selecting a Suffix
Traditionally LDAP directories have followed the X.500 naming convention for suffixes. This traditional form specifies an organization name followed by a country designation. For example:
o=Airius, c=US
This suffix pattern effectively roots your directory service in a specific country, which may or may not be appropriate depending on the nature of your enterprise.
The only time rooting your directory tree in a country designator is really necessary is when you are participating in an X.500 directory service. In that case, you should follow whatever DN conventions are in use by the X.500 service.
Generally, rooting your directory tree in a country designator is an acceptable practice if your enterprise is not multinational in nature. Therefore, if your enterprise is a government or military organization, educational institution, or small business, no harm can come from rooting your directory tree in a country designator. It is worth noting, however, that there is also no real benefit in doing so. Unlike X.500 directory services, LDAP does not require any specific format for the DN naming conventions, so you are free to use whatever you want for your directory suffix.
The best practice for choosing a directory suffix is to align it with a DNS name or Internet domain name associated with your enterprise. This is the best approach regardless of the nature of your enterprise. Therefore, if your enterprise owns the domain name of airius.com
, then you should use a directory suffix of:
o=airius.com
Another option is to use the dc
(domainComponent
) attribute to represent your suffix. To represent your domain name using the dc
attribute, you break your domain name into its component parts as follows:
dc=airius, dc=com
Note
If you are going to use a Netscape 1.x Certificate Server with your intranet, you
should avoid the use of the dc
attribute in your DNs because the 1.x certificate
server does not support this attribute.
Note that you could instead extend the directory tree so that it includes all members of the consortium, and then use smart referrals at each branch point to point to the appropriate directory server for the subtree. This method works best for tightly knit international enterprises where issues of organizational identity within the directory tree can be reduced or eliminated entirely. For enterprises that want to retain their suffix identification (this is usually purely a political and cultural issue), the use of smart referrals is the best approach Your site is enabling an extranet. In this case, you should configure your directory service to recognize the suffix used by each of your trading partners. Again, each suffix should have a corresponding root directory entry that is a smart referral to the directory service used by that particular trading partner. For more information on enabling extranets with your directory service, see "Enabling the Extranet".
Branching Your Directory Tree
Traditionally, X.500 directory services branched their directory trees to reflect organizations across the enterprise. For example, if Airius Corporation had the organizational units of Marketing, Engineering, Sales, Accounting, and Services, then the traditional directory tree would be organized as follows:
Because X.500 preceded LDAP, there is strong momentum to continue designing directory trees along these traditional organizational lines. However, you should avoid this traditional directory tree structure. Most enterprises experience significant and frequent movement of personnel between organizations. Further, some enterprises, particularly corporations, often restructure and rename their organizations with some frequency. In the end, designing your directory trees along organizational lines will only cause you significant administrative burdens when these organizational lines change.
Branch Point Distinguished Name Attributes
As you decide how to branch your directory tree, you will need to decide what attributes you will use to identify the branch points. Remember that a DN is unique string composed of attribute-data pairs. Traditionally, DNs follow the format:
cn=<value>, l=<value>, ou=<value>, o=<value>,
c=<value>
It is recommended that you change this traditional format to
cn=<value>, l=<value>, ou=<value>, o=<domain>
The left-most attribute is called the Relative Distinguished Name (RDN). The appropriate value for the RDN is discussed in "Naming Person Entries" and "Naming Non-Person Entries".
All of the intermediate attribute-data pairs represent branch points in your directory tree. This is an area where LDAP differs from X.500. While LDAP allows you to use any attributes and attribute values for your directory branch points, X.500 identifies which attributes can appear in a DN, and even the order in which they must appear. From the LDAP perspective there is not even a requirement to use any of the traditional attributes in your DN scheme. However, there are some things you should consider when choosing attributes to represent your branch points:
ou=widget research, o=airius.com
then add an
ou
attribute to the entry whose value is widget research.
Table 6.1 Traditional DN Branch Point Attributes
l
(locality
) to represent an organization, or c
(country
) to represent an organizational unit. The traditional attributes and their meanings are defined as follows:
Note
A common mistake is to assume that you search your directory based on the
attributes used in the distinguished name. This is not true. The distinguished
name is only a unique identifier for the directory entry, and you cannot search
against it. Instead, you search for entries based on the attribute-data pairs stored
on the entry itself. Thus, if your distinguished name contains the value cn=babs
jensen, then you can cannot search against that attribute-data pair unless you
have defined cn: babs jensen
in the directory entry.
Branching to Support Replication or Referrals
You can organize your directory tree so that it corresponds to the network names in your enterprise. This approach is attractive because it is an extension of the strategy recommended for suffix names and because network names tend to be fairly stable entities. Further, this approach may be particularly attractive in the higher branches of your trees if your directory service is using replication or referrals to tie together different directory servers.
For example, if Airius has three primary networks known as flightdeck.airius.com
, tickets.airius.com
, and hanger.airius.com
, then you might want to branch your directory tree as follows:
After your initial branching, you may want to further branch your directory tree along some of the divisions as noted in "Branching Strategies". This is especially true if each directory server is maintaining directory entries specific to that location, such as might be the case for enterprises using subtree replication and local mastering of directory data or enterprises using smart referrals to tie together different organizational entities. For example:
Branching to Support Access-Control
In some respects, the reasons why you might branch to support access-control are similar to the reasons why you might branch to support replication: it is easier to group together similar entries and then administer them from a single branch point.
However, in the case of access-control, you may have some entries to which you want to grant special privileges based on the organization to which the entries belong. That is, you may want to grant a person write privileges to entries belonging to the Marketing organization. You can, of course, branch your directory tree to include a Marketing organizational tree. However, as stated in "Branching Your Directory Tree", branches based on organizational divisions within your enterprise can lead to administrative problems when those divisional lines change.
Generally you can avoid branching for this reason by using the Netscape ACI filtered target mechanism. This mechanism allows you to apply an access-control rule to a directory entry based on some attribute-data pair included on the entry. That is, you can allow or deny access if an entry includes the attribute-data pair of:
ou: Marketing
At some point, however, you are likely to find that using search filters to support your ACL is cumbersome and difficult to manage. It is at this point that you must decide whether it is easier to branch along organizational lines, or if you would rather support a complex set of LDAP filters in your security policy.
Ultimately you will probably have to use some combination of the two mechanisms. Here are some guidelines that can make this task easier for you:
Naming Person Entries
After you have branched your directory tree, you must name the person entries beneath your branch points. That is, you must decide what the relative distinguished name (RDN) will be for your person entries (the RDN is always the left-most attribute-data pair in any DN). Here again, the traditional choice is not necessarily the best choice.
Traditionally, distinguished names use the commonName
, or cn
, attribute to name their person entries. That is, an entry that represents a person named Babs Jensen might have the distinguished name of:
cn=Babs Jensen, o=Airius.com
While allowing you to instantly recognize the person represented by the entry, this format suffers in that most organizations usually include people with identical names. This quickly leads to a problem known as DN name collisions, that is, multiple entries with the same distinguished name. Remember that DNs must be unique.
One common way to avoid common name collisions is to add a unique identifier to the common name. For example:
cn=Babs Jensen 23, o=Airius.com
However, for very large directories, this can lead to awkward common names, such as:
cn=Bill Smith11022.
A better approach is to identify your person entries with some attribute other than cn
. There are two traditional possibilities available to you:
commonName
(cn
) attribute in the RDN if possible. Therefore, if you are naming a group entry, name it as follows:
cn=administrators, o=airius.comThe caveat is if you are naming an entry whose object class does not support the
commonName
attribute. Since you will want to include the RDN attribute and attribute value in the directory entry to aid in locating the entry, you should use an attribute for the RDN that is supported by the entry's object class (fortunately, there are not very many object classes in the standard schema where this is a problem).
Finally, if you decide to use a non-traditional attribute for your RDN, make sure that all of the applications and clients that will use your directory support the non-standard attribute. The Netscape 1.x Certificate Server in particular has restrictions on what DNs it will support in your directory. See the Certificate Server documentation for more information.
Last Updated: 02/17/98 15:42:03