Names for Objects in Active Directory
One of the biggest confusions with Active Directory is the many "names" that
can be used to refer to or describe an object. Most of these "names" are attributes
(or properties) of the object. There is even a property method called "Name". A
Property Method is actually a method (a function) that calculates a value from other properties.
Note that the terms "attribute" and "property" are interchangeable. The
name of a property or attribute is like the name of a variable. The actual value of the property
can be assigned by the network administrator, or sometimes by the system.
Some of the confusion arises because the same attribute can have a different name depending on the
provider used. Even worse is that sometimes the same attribute name can refer to a different
attribute, depending on the provider. The following table attempts to clarify the situation.
Active Directory Attribute | WinNT property | LDAP property |
SAM-Account-Name | name | sAMAccountName |
Common-Name | n/a | cn |
RDN | n/a | Name |
Display-Name | fullName | displayName |
Surname | n/a | sn |
Given-Name | n/a | givenName |
Initials | n/a | initials |
Moniker | n/a | moniker |
Personal-Title | n/a | personalTitle |
Generation-Qualifier | n/a | generationQualifier |
User-Principal-Name | n/a | userPrincipalName |
Obj-Dist-Name | n/a | distinguishedName |
n/a | AdsPath | n/a |
n/a | n/a | AdsPath |
The "Name" property of the WinNT provider is sometimes called the "NT Name",
because it is the name used in NT networks. The WinNT "Name" property of a user object
is the pre-Windows 2000 logon name. The LDAP provider calls this attribute "sAMAccountName".
The value can be the same as the value assigned to the LDAP "cn" attribute, but it
does not have to be. This can be a major source of confusion. You cannot retrieve the "cn"
attribute with the WinNT provider.
The "Name" property method of the LDAP provider is the same as the "cn"
property, but with the string "cn=" appended in front. For example,
if cn = "TestUser", then Name = "cn=TestUser". The "Name" property
method returns the Relative Distinguished Name (RDN) of the object.
The same attribute called "FullName" using the WinNT provider is called
"displayName" using LDAP. Many of the other attributes used to identify
users are only exposed by the LDAP provider.
Both providers expose an "ADsPath" attribute, but this is actually a
"Property Method". It is the binding string used to bind to the object with the
provider. The LDAP provider also exposes a "distinguishedName" attribute. It is the
same as "AdsPath", but without the provider moniker ("LDAP://") in the
string. The "distinguishedName" property of an object might be something like
"cn=TestUser,ou=Sales,dc=MyDomain,dc=com". It uniquely specifies the object in
Active Directory. It includes the Relative Distinguished Name of the object, plus the full
path to the container holding the object in Active Directory.
The "userPrincipalName" is an alternative name for the user to logon with.
It is in the form "LogonName@DNSDomain". For example, it could be
"Joe User@MyDomain.MyCompany.com". This attribute is not always assigned a
value in Active Directory.
The only attributes in the table above that are mandatory are "SAM-Account-Name"
and "Common Name". If a user object is created with the LDAP provider, values must
be specified for both "cn" and "sAMAccountName". If a user object is
created with the WinNT provider, only the "Name" attribute is specified
("SAM-Account-Name"), but "Common Name" is automatically assigned to the
same value. If a user object is created in the "Active Directory Users and Computers" MMC,
the names default as follows. You specify the "First Name", "Initials",
and "Last Name" of the user (the "givenName", "initials",
and "sn" attributes). The field labeled "Full Name" defaults to be
<givenName> <initials>. <sn>. This string is assigned to the "cn" attribute
(Common Name). You are allowed to overwrite the default. The fact that the cn attribute is
referred to as "Full Name" is another source of confusion. In the
"New Object – user" dialog you are also required to specify a "User logon name".
This, in combination with the DNS domain name, becomes the "userPrincipalName".
Finally, as you key in "User logon name", the field "pre-Windows 2000 logon name"
is filled in for you with the first 20 characters of "User logon name". This becomes
the "sAMAccountName" attribute.
The full NT name of an Active Directory object is in the form "NetBIOSDomain\sAMAccountName".
An example could be:
MyDomain\TestUser
The full LDAP name of the same object could be specified by:
cn=Test1,ou=Sales,ou=East,dc=Domain1,dc=com
As you can see, the "sAMAccountName" attribute does not have to be the same as the
"cn" attribute. In addition, the DNS domain name (Domain1.com above) does not have to
match the NetBIOS domain name (MyDomain above). This can make "finding" objects in
Active Directory difficult. Fortunately, the NameTranslate object is generally available to
convert names between these two forms.
It should be noted that the sAMAccountName attribute of any object must be unique in the domain.
The userPrincipalName must be unique in the forest. However, the cn attribute (common name) must
only be unique in the container or organizational unit. There can be several objects with the
same cn, as long as they are in different containers. Note, however, that the distinguishedName
will always be unique in the forest.
A final concept to discuss is the relative distinguished name, abbreviated RDN. For a user
object, this is the common name (cn) attribute. The Name property method returns the RDN.
The RDN of any object is the first part of the distinguishedName, abbreviated DN, of the object.
For example, if the DN of a computer object is:
cn=Minnesota,cn=computers,dc=MyDomain,dc=com
Then, the RDN is "cn=Minnesota".
A few naming abbreviations:
cn | Common Name |
ou | Organizational Unit |
dc | Domain Component |
dn | Distinguished Name |
RDN | Relative Distinguished Name |
UPN | User Principal Name |