# Lightweight Directory Access Protocol

Lightweight Directory Access Protocol (LDAP) is een netwerkprotocol dat beschrijft hoe gegevens uit directoryservices benaderd moeten worden, bijvoorbeeld over TCP/IP. LDAP maakt gebruik van het LDAP Data Interchange Format (LDIF). Dit is een ASCII-formaat dat wordt gebruikt om gegevens toe te voegen aan de LDAP-hiërarchische database.
Een directory is in dit verband informatie die op een hiërarchische manier, gegroepeerd naar een bepaald attribuut, is opgeslagen. Dit is vergelijkbaar met een telefoonboek waarin telefoonnummers en adressen van personen per bedrijf worden opgeslagen. Een directorynaam komt overeen met de bedrijfsnaam. Iedere directory bevat dan alle personen binnen dat bedrijf als objecten, met contactgegevens zoals telefoonnummer en e-mailadres als attributen.

## LDAP en X.500

Het bovenstaande voorbeeld schetst de oorsprong van het LDAP, namelijk de telecommunicatie. Vanuit deze wereld zijn de telefoondirectory's het domein van de computernetwerken binnengekomen. Om de nu elektronische telefoondirectory's beter te kunnen beheren is door International Telecommunication Union (ITU) de zogenoemde X.500-standaard ontwikkeld. Een onderdeel van deze standaard is het Directory Access Protocol (DAP). Via dit protocol werden achterliggende directory's op een gecontroleerde en gestructureerde manier toegankelijk.
De omschrijving van de X.500-standaarden waren precies en daarom ook erg omvangrijk. Vandaar dat er betrekkelijk weinig implementaties van de standaarden waren gemaakt. De implementaties die er wel waren, behoefden echter veel rekenkracht. Er ontstond dan ook een vraag om een lichtere implementatie van de X.500-standaarden: LDAP.
De huidige versie van LDAP is LDAPv3. Deze heeft minder overhead dan zijn zwaardere voorganger DAP. Zo kent de huidige versie slechts negen basisoperaties, en kende de oorspronkelijke versie van LDAP zelfs geen beveiligingsopties. LDAP is ontwikkeld aan de universiteit van Michigan. Het protocol is vastgelegd in volgende RFC's:
* 4510 - Lightweight Directory Access Protocol (LDAP): Technical Specification Roadmap
* 4511 - Lightweight Directory Access Protocol (LDAP): The Protocol
* 4512 - Lightweight Directory Access Protocol (LDAP): Directory Information Models
* 4513 - Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms
* 4514 - Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names
* 4515 - Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters
* 4516 - Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator
* 4517 - Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules
* 4518 - Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation
* 4519 - Lightweight Directory Access Protocol (LDAP): Schema for User Applications

## Algemeen

Onderdelen van LDAP:
* Directory: informatie die op een hiërarchische manier is opgeslagen (Root/base/suffix = top van de boom)
* Entry: instantie van één of meerdere objectklassen (een entry bevat attributen waar waarden aan toegekend kunnen worden)
* Objectklasse: welke attributen een entry kan bevatten (types: Structural, Auxilliry en Abstract)
* Attributen: elk attribuut wordt gedefinieerd in een type (de syntaxis specificeert wat voor waarden aan het attribuut kunnen worden toegekend)
* DIT: Directory Information Tree = hiërarchische boomstructuur die zo tot stand komt (entry's worden geordend in een boomstructuur (DIT) a.d.v. hun Distinguished name(DN))
Overerving:
* Objectklassen kunnen overerven
* Attribuuttypes kunnen overerven
SUP = superior of parent (erft daarvan over) LDIF, is LDAP Data Interchange Format, een bestandsformaat dat gebruikt wordt om een LDAPdirectory aan te maken of aan te passen

## LDAP-implementaties

Er zijn meerdere instanties, die een implementatie, zowel open source als commercieel, hebben gemaakt van LDAP, waaronder de volgende:
* Apache Directory Server
* IBM Tivoli Directory Server
* Red Hat Directory Server
* OpenLDAP
* Novell eDirectory
* Sun Directory Server Enterprise Edition
* Oracle DSEE
* Windows Server Active Directory