LDAP
Was ist LDAP ?
Ein Verzeichnis (Directory) ist eine hierarchische Datenbank, die für einfache Abfrageoperationen (Query) optimiert ist. Es wird hauptsächlich zur Speicherung von Benutzerinformationen verwendet.
LDAP steht für Lightweight Directory Access Protocol.
- LDAP an der Uni Michigan erfunden als Aufsatz auf X500-Server
- purer LDAP-Server : slapd (slurpd für Replikation)
Einsatzgebiete von LDAP
Beispiele:
- Benutzerverwaltung
- elektronisches Telefonbuch für Firmen
- Email-Adressverzeichnis
- zur Zertifikatsverwaltung (Sicherheitsinformationen wie Passwörter)
- HelpDesk (Hardware-/Software-Datenbank)
- Zugangskontrolle (Building-Security SmartCard,SecuID-Card)
- Ressourcenverwaltung (Räume, Gegenstände, usw.)
Eigenschaften
- Teilbäume können lokal verwaltet werden
- Replikation
Vorteile von LDAP
- eine zentrale Benutzerverwaltung (betriebssystemunabhängig)
- nicht die Applikation verwaltet die Benutzer, sondern der zentrale DS
Grundbegriffe
Darstellung der Informationen durch Objekte, Objekte sind Exemplare von Klassen, Klassen sind in einer Vererbungshierarchie
- Entry
- Ein Eintrag besteht aus einer Menge von Attributen (beschreibender Name und einem OID (Objectidentifikation)
- Attributtyp
- Atributtyp beschreibt die Syntax und die Werte, die ein Attribut annehmen duerfen.
- objectClass-Attribut
- Jeder entry muß so eines haben. Dieses kann nicht geändert werden.
- Directory Information Tree (DIT)
- hierarchisch organisiertes DIB Directory Information Base
[RFC4512]
- Distinguished Name (DN)
- eindeutiger Name eines Eintrags
- Directory nach X500
- eine Ansammlung von offenen Systemen die zusammen den Verzeichnisdienst erbringen [RFC4512]
- DIB - Directory Information Base
- die Gesamtheit des im verteilte Verzeichnis enthaltenen Information [RFC4512]
- DUA - Directory User Agent
-
- Client [RFC4512]
- DSA Directory System Agents
-
ein Server, der einen Teil des DIB enthält
[RFC4512]
Es können Filter angegeben werden, um die Herausgabe von Information seitens des Servers zu beschränken.
Links zu LDAP an sich
- RFCS
-
- RFC4510: "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map ", OpenLdap 2006
- beschreibt LDAPv3 und erklärt die folgenden RFCs sowie dass Datenmodelle nach X500(1993) der ITU-T und Dienstmodelle X501/X511 auch erfüllt werden müssen.
(ersetzt die bisherige LDAP-Spezifikation RFCs 2251-2256, 2829, 2830, 3771, und 3377)
- RFC4511 : The Protocol
-
- Protokoll wird in ASN.1 spezifiziert und mit BER codiert
- RFC4512 : Directory Information Models
- beschreibt das X500-Verzeichnisinformationsmodell, wie es in LDAP genutzt werden soll.
- Jeder Knoten des DIT kann enthalten:
- User-Information, die eigentlichen Nutzdaten
- Verwaltungsinformation z.B. Zugriffsrechte
- Jeder Knoten hat einen RDN-Relative Distinguished Name, bestehend aus AVA - Attribue Value Assertion z.B. OU=Engineering.
Ein Knoten kann mehrere solche AVAs haben (multivalued).
- Distinguished Name eines Knotens ist der RDN verbunden mit dem DN des Vorgängerknotens
- Ein Schema kann beschrieben werden (Beispiele in /etc/openldap/schema bei einem Openldap-Server
- RFC4513 : Authentication Methods and Security Mechanisms
-
- RFC4514 : String Representation of Distinguished Names
-
- RFC4515 : String Representation of Search Filters
-
- RFC4516 : Uniform Resource Locator
-
- RFC4517 : Syntaxes and Matching Rules
-
- RFC4518 : Internationalized String Preparation
-
- RFC4519 : Schema for User Applications
-
definiert gebräuchliche Attribute
historische Entwicklung
- HRFC1274: COSINE and Internet X.500 Schema (PS)
- HRFC1279: X.500 and Domains (E)
- HRFC1308: Executive Intro to Directory Services - X.500 (FYI13)
- HRFC1309: Technical Overview of Directory Services - X.500 (FYI14)
- HRFC1617: Naming and Structuring Guidelines for X.500 Directory Pilots (I)
- HRFC1777: Lightweight Directory Access Protocol (DS)
- HRFC1781: Using the OSI Directory to Achieve User Friendly Naming (PS)
- HRFC1823: LDAP C API (I)
- HRFC2079: X.500 Attribute Type and an Object Class to Hold URIs (PS)
- HRFC2251: LDAPv3 Protocol (PS)
- HRFC2252: LDAPv3 Attribute Types (PS)
- HRFC2253: LDAPv3 Disinguished Name (PS)
- HRFC2254: LDAPv3 Search Filters (PS)
- HRFC2255: LDAPv3 URI (PS)
- HRFC2256: X.500(96) Schema for LDAPv3 (PS)
- HRFC2293: Tables and Subtrees in the X.500 Directory (PS)
- HRFC2377: LDAP Naming Plan (I)
- HRFC2559: Internet X.509 PKI Operational Protocols - LDAPv2 (PS)
- HRFC2587: Internet X.509 PKI LDAPv2 Schema (PS)
- HRFC2589: LDAPv3: Dynamic Directory Services Extensions (PS)
- HRFC2596: Use of Language Codes in LDAP (PS)
- HRFC2696: LDAP Simple Paged Result Control (PS)
- HRFC2798: LDAP inetOrgPerson schema (I)
- HRFC2829: LDAPv3: Authentication Methods (PS)
- HRFC2830: LDAPv3: StartTLS (PS)
- HRFC2831: SASL/DIGEST-MD5 (PS)
- RFC2849: LDIFv1 (PS)
- HRFC2891: LDAPv3: Server Side Sorting of Search Results (PS)
Legend:
STD Standard
DS Draft Standard
PS Proposed Standard
I Information
E Experimental
FYI For Your Information
BCP Best Common Practice
- RFC2251 LDAP v3 .
Unterschiede sind:
- alle Elemente von RFC1777
- direkte übetrtragung über TCP oder sonstigen Transportmechanismus, ohne zusätzlichen Präsentations oder Sitzungsaufwand von X500
- Die meisten Datenelemente können als gewöhnliche Zeichenketten zurückgeliefert werden.
- Attributwerte und Distinguished Names ISO 10646 character set.
- Das Protokoll kann erweitert werden, um neue Operationen zu unterstützen und Kontrollanweisungen können existierende Operationen erweitern.
- Das Schema wird im Verzeichnis publiziert, damit die Clients es nutzen können.
- Neue Sicherheitsmechanismen:
- Es können Verweise auf andere Server zurückgeliefert werden.
- RFC1777: Lightweight Directory Access Protocol (LDAPv2)
- RFC2252 Attribut-Syntax Definitions
- RFC2253 UTF-8 DNs
- RFC2254 Filter Format
- RFC2255 LDAP URLs
Syntax
<ldapurl> ::= "ldap://" [ <hostport> ] "/" <dn> [ "?" <attributes> [ "?" <scope> "?" <filter> ] ]
<hostport> ::= <hostname> [ ":" <portnumber> ]
<dn> ::= a string as defined in RFC 1485
<attributes> ::= NULL | <attributelist>
<attributelist> ::= <attributetype> | <attributetype> [ ","
<attributelist> ]
<attributetype> ::= a string as defined in RFC 1777
<scope> ::= "base" | "one" | "sub"
<filter> ::= a string as defined in RFC 1558
Beispiel:
ldap://rws/dc=infnet, dc=verein, dc=de??sub
Dies kann man z.B. in Netscape-Communicator als URL eingeben.
- LDAP-Implementation-HOWTO 2001
- LDAP-HOWTO
-
- LDAPv3 HOWTO
- mit
OpenLDAP, OpenSSL, SASL and KerberosV
- LDAP-FAQ
-
- An LDAP Roadmap & FAQ
- eine ausführliche Sammlung zu LDAP, inbesondere die Roadmap scheint sehr interessant
- http://ldapman.org/
- möchte ein Startpunkt zur LDAP_Dokumentation im WWW sein.
- http://www.range.net/ldap/
Schemata
Aufbau des Verzeichnisbaums, bzw. der Distinguished Names (DN) als Pfad im Baum
- Internet-Style DN
- die meist significanten DN-Komponenten sind dc domain components von registrierten Internet-Domains (aus DNS),
Beispiel: uid=rw,dc=infnet,dc=verein,dc=de
(aus OpenLDAP FAQ)
vgl RFC2247: Using Domains in LDAP DNs (PS)
- Traditionelle X500 organisatorische DNs
-
nutzen geopolitische und organisatorische Namen, die durch nationale bzw. deligierte Institutionen registriert sind.
Beispiel: cn=Heinz Mayer o=Stadtverwaltung o=Ravensburg c=de
(aus OpenLDAP FAQ)
RFCS für Schemata
- http://www.ietf.org/html/html.charters/schema-charter.html
- RFC2256 Userschema: hier werden grundlegende Attribute wie Name,Organisation usw.
definiert.
- RFC2307: LDAP Network Information Services Schema (I)
LDAP als NIS : spezifiziert die üblichen UNIX_Dateien passwd,group, netgroup usw. mit Hilfe von LDAP, damit man alles in einem Verzeichnisdienst verwalten kann.
- RFC2218: Common Schema for the Internet White Pages Service
- RFC2587: Internet X.509 PKI LDAPv2 Schema (PS)
- RFC2713: LDAP Java schema (I)
- RFC2714: LDAP COBRA schema (I)
- RFC2798: LDAP inetOrgPerson schema (I)
Links zu LDAP-Schemata
- LDAP-Schema-Viewer
- Online-Auskunftssystem über LDAP-Schemas, welche Attribute welche Klasse
haben muß usw.
- LDAP-Examples von PADL.com
- Beispiel für diverse Objekte (User,Group,MailAlias,Mount,Service,RPC,Host,Network)
Ldiff - LDAP Interchange format
siehe RFC2849,RFC4525 und [WP]
- Es dient zum Austausch von Daten zwischen 2 LDAP-Servern
- Es dient zum Einspeisen von alten Systemen, die Daten sollen mit perl oder so in dieses Austauschformat gebracht werden.
Einbettung in Systeme
Siehe auch PAM
Implementierungen
Anwendungen, die auf LDAP zugreifen
Dienste
- ldap-smb-HEAD-howto
-
- LDAP mit Sendmail
-
- Der WWW-Proxy Squid
- Configuring Netscape roaming with OpenLDAP
-
Clients
- Web2Ldap macht Zugriff via WWW
- JXPlorer [WP]
- pcANYWHERE 9.2
- Netscape Communicator Address Book
- MS Outlook
- Pegasus Mail
- Checkpoint Firewall-1
- Oracle LDAP Gateway
Bibliotheken
Arbeitsmodi des OpenLDAP Servers
- SLAPD (Standalone LDAP Directory Server)
- LDUP (LDAP Duplication/Update Protocol)
- SLURPD (Standalone LDAP Update Replication Daemon)
Öffentliche LDAP_Server
- ldap.yahoo.com
sonstiges
Andere Arbeiten
- Willeke LDAP Wiki