Introduction to OpenLDAP¶
The Lightweight Directory Access Protocol, or LDAP, is a protocol for querying and modifying an X.500-based directory service running over TCP/IP. The current LDAP version is LDAPv3, as defined in RFC 4510, and the implementation used in Ubuntu is OpenLDAP.
The LDAP protocol accesses directories. It’s common to refer to a directory as an LDAP directory or LDAP database as a shorthand – although technically incorrect, this shorthand is so widely used that it’s understood as such.
Key concepts and terms¶
A directory is a tree of data entries that is hierarchical in nature; it is called the Directory Information Tree (DIT).
An entry consists of a set of attributes.
An attribute has a key (a name or description) and one or more values. Every attribute must be defined in at least one
objectClass
.Attributes and
objectClasses
are defined in schemas (anobjectClass
is considered a special kind of attribute).Each entry has a unique identifier: its Distinguished Name (DN or dn). This, in turn, consists of a Relative Distinguished Name (RDN) followed by the parent entry’s DN.
The entry’s DN is not an attribute. It is not considered part of the entry itself.
Note: The terms object, container, and node have certain connotations but they all essentially mean the same thing as entry (the technically correct term).
For example, below we have a single entry consisting of 11 attributes where the following is true:
DN is
cn=John Doe,dc=example,dc=com
RDN is
cn=John Doe
parent DN is
dc=example,dc=com
dn: cn=John Doe,dc=example,dc=com
cn: John Doe
givenName: John
sn: Doe
telephoneNumber: +1 888 555 6789
telephoneNumber: +1 888 555 1232
mail: [email protected]
manager: cn=Larry Smith,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
The above entry is in LDAP Data Interchange Format format (LDIF). Any information that you feed into your DIT must also be in such a format. It is defined in RFC 2849.
A directory accessed via LDAP is good for anything that involves a large number of access requests to a mostly-read, attribute-based (name:value) backend, and that can benefit from a hierarchical structure. Examples include an address book, company directory, a list of email addresses, and a mail server’s configuration.
Our OpenLDAP guide¶
For users who want to set up OpenLDAP, we recommend following our series of guides in this order:
References¶
Zytrax’s LDAP for Rocket Scientists; a less pedantic but comprehensive treatment of LDAP Older references that might still be useful:
O’Reilly’s LDAP System Administration (textbook; 2003)
Packt’s Mastering OpenLDAP (textbook; 2007)