Lightweight Directory Access Protocol (LDAP ) is an Internet protocol for accessing directory information services that act in accordance with X.500 data and service models." A full description of the protocol can be found in the "Lightweight Directory Access Protocol (LDAP) Technical Specification Road Map" RFC 4510 and its references. Directory services play an important role in developing intranet and Internet applications by allowing the sharing of information about users, systems, networks, services, and applications throughout the network. As examples, directory services may provide any organized set of records, often with a hierarchical structure, such as a corporate email directory. Similarly, a telephone directory is a list of subscribers with an address and a phone number. A common use of LDAP is to provide a central place to store usernames and passwords. This allows many different applications and services to connect to the LDAP server to validate users. LDAP is a simpler (lightweight) subset of the standards in the X.500 series, particularly the X.511 Directory Access Protocol. Because of this relationship, LDAP is sometimes called X.500 Lite. The main components of LDAP are:
Protocol (RFC 4511): An application protocol that runs over an Internet Protocol (IP) network used to communicate with a directory service Directory Information Models (RFC 4512): A specification for systems that implement directory services, i.e., "a collection of open systems cooperating to provide directory services" Schema for User Applications (RFC 4519): A standard and extensible data schema for information to be help in a directory service - a "specification of attribute types and object classes intended for use by LDAP"
History Telecommunication companies' understanding of directory requirements was well developed after some 70 years of producing and managing telephone directories. These companies introduced the concept of directory services to information technology and computer networking, their input culminating in the comprehensive X.500 specification, a suite of protocols produced by the International Telecommunication Union (ITU) in the 1980s. X.500 directory services were traditionally accessed via the X.511 Directory Access Protocol (DAP), which required the Open Systems Interconnection (OSI) protocol stack. LDAP was originally intended to be a lightweight alternative protocol for accessing X.500 directory services through the simpler (and now widespread) TCP/IP protocol stack. This model of directory access was borrowed from the DIXIE and Directory Assistance Service protocols. The protocol was originally created by Tim Howes of the University of Michigan, Steve Kille of Isode Limited, Colin Robbins of Nexor and Wengyik Yeong of Performance Systems International, circa 1993, as a successor to DIXIE and DAS. Mark Wahl of Critical Angle Inc., Tim Howes, and Steve Kille started work in 1996 on a new version of LDAP, LDAPv3, under the aegis of the Internet Engineering Task Force (IETF). LDAPv3, first published in 1997, superseded LDAPv2 and added support for extensibility, integrated the Simple Authentication and Security Layer, and better aligned the protocol to the 1993 edition of X.500. Further development of the LDAPv3 specifications themselves and of numerous extensions adding features to LDAPv3 has come through the IETF. In the early engineering stages of LDAP, it was known as Lightweight Directory Browsing Protocol, or LDBP. It was renamed with the expansion of the scope of the protocol beyond directory browsing and searching, to include directory update functions. It was given its Lightweight name because it was not as network intensive as its DAP predecessor and thus was more easily implemented over the Internet due to its relatively modest bandwidth usage. LDAP has influenced subsequent Internet protocols, including later versions of X.500, XML Enabled Directory (XED), Directory Service Markup Language (DSML), Service Provisioning Markup Language (SPML), and the Service Location Protocol (SLP). It is also used as the basis for Microsoft's Active Directory.
Protocol overview A client starts an LDAP session by connecting to an LDAP server, called a Directory System Agent (DSA), by default on TCP and UDP port 389, or on port 636 for LDAPS (LDAP over TLS/SSL, see below). The client then sends an operation request to the server, and a server sends responses in return. With some exceptions, the client does not need to wait for a response before sending the next request, and the server may send the responses in any order. All information is transmitted using Basic Encoding Rules (BER). The client may request the following operations:
StartTLS – use the LDAPv3 Transport Layer Security (TLS) extension for a secure connection Bind – authenticate and specify LDAP protocol version Search – search for and/or retrieve directory entries Compare – test if a named entry contains a given attribute value Add a new entry Delete an entry Modify an entry Modify Distinguished Name (DN) – move or rename an entry Abandon – abort a previous request Extended Operation – generic operation used to define other operations Unbind – close the connection (not the inverse of Bind) In addition the server may send "Unsolicited Notifications" that are not responses to any request, e.g. before the connection is timed out. A common alternative method of securing LDAP communication is using an SSL tunnel. The default port for LDAP over SSL is 636. The use of LDAP over SSL was common in LDAP Version 2 (LDAPv2), but it was never standardized in any formal specification. This usage has been deprecated along with LDAPv2, which was officially retired in 2003.
Directory structure The protocol provides an interface with directories that follow the 1993 edition of the X.500 model:
… excerpt ends here. Continue reading the full article.


