LDAP steht für Lightweight Directory Access Protokoll.
Es ist ein Client/Server-Protokoll zum Zugriff auf Verzeichnisdienste,
läuft über TCP/IP und ist schnell zur defacto Standard-Zugriffsmethode
für Verzeichnisse (Directories) geworden. Ursprünglich
war LDAP als Frontend für X.500 gedacht, wird aber heute
auch mit speziell für LDAP konzipierten Directory-Servern
("LDAP-Server") genutzt.
LDAP ist ein herstellerunabängiges, offenes Netzwerkprotokoll
und damit auch plattform-unabhängig. Es wird von massgeblichen
Herstellern wie IBM, Microsoft, Novell, Sun, Netscape,...)
unterstützt.
Ein Verzeichnis (Directory) ist eine hierarchische Datenbank,
die für einfache Abfrageoperationen (Query) optimiert ist.
Es wird hauptsächlich zur Speicherung von Benutzerinformationen
verwendet.
Einsatzgebiete von LDAP:
Benutzerverwaltung,
Elektronisches Telefonbuch für Firmen,
E-Mail-Adressverzeichnis,
Zertifikatsverwaltung (Sicherheitsinformationen wie Passwörter),
Charakteristik von Verzeichnissystemen im Vergleich zu Datenbanken:
Überweigend lesende Zugriffe, nur selten Schreibzugriffe
Das Abfragen muss auch unter Hochlastbedingungen noch schnell gehen
keine komplizierten Transaktionsmechanismen, Schreibzugriffe
sind selten und atomar
Replikationen zur Performancesteigerung, Inconsistenzen
für kurze Zeit tragbar
Teilbaumverwaltung.
Vorteile von LDAP sind: Benutzerverwaltung zentral und
betriebssystemunabhängig. Nicht die Applikation verwaltet
die Benutzer, sondern der zentrale Directory Server.
Zu den führenden LDAP-Server-Produkten gehören: IBM SecureWay
Directoy, iPlanet (Sun/Netscape), OpenLDAP, Lotus Notes
Directory, Microsoft Active Directory, Oracle Internet Directory,
Novell NDS,....
LDAP steht für Lightweight Directory Access Protocol und ist ein
Client-Server-Protokoll für den Zugriff auf einen Verzeichnisdienst
(directory service) über TCI/IP (Standard-Port: 389). Anfangs
wurde es als Front-end für X.500-Verzeichnisdienste verwendet.
Heute gibt es aber auch "stand-alone" LDAP-Server.
Lotus Notes Server (Domino)
Lotus Notes Server (ab 4.6) kann die im Lotus Notes Adressbuch
gespeicherten Informationen mit Hilfe des LDAP-Tasks wie ein
LDAP-Server anbieten. Ab Release 5 ist dies noch etwas verbessert
und heisst nun "Domino Directory".
SLAPD
Die Firma AE Inc. bietet mit SLAPD
eine Portierung von LDAPv3 der Uni Michigan. Eines der wenigen
Produkte, das auch unter Windows 95 läuft.
OpenLDAP
Ein Open-Source-Produkt, das nur unter UNIX /Linux, Cygwin,...)
läuft.
Seit Anfang 2000 ist dies in die Sun-Netscape Allianz "iPlanet"
eingeflossen. Das Produkt heisst jetzt "iPlanet Directory Server
4.12" und ist auch für Windows NT SP5 verfügbar.
Yahoo hat einen Internet-Directory-Service namens "Yahoo
People Search" (der Dienst "Four11" wurde von Yahoo
übernommen und dessen Daten in People Search eingespielt).
Yahoo People Search kann als LDAP-Dienst angesprochen werden (Outlook:
Extras, Konten, Verzeichnisdienst: ldap.yahoo.com) oder aber auch
über ein proprietäres Web-Interface unter http://people.yahoo.com genutzt werden.
Dort gefundene Personendaten können als vCard auf den lokalen PC exportiert werden
und dann in lokale Software, die vCard unterstüzt, aufgenommen werden.
Proprietäre Directory Services:
Novell NDS
Banyan StreetTalk
7. OpenLDAP unter Cygwin
Wenn man LDAP lernen will, benötigt man einen LDAP-Server.
Sowas gibt es aber fast nur unter Unix und unter Windows NT Server.
Was macht man wenn man das alles nicht zuhause rumstehen hat? Die
Antwort heute heisst: Cygwin!
Cygwin wurde von Red Hat entwickelt und stellt unter einem schlichten
Windows (bei mir: Win98SE) in einem Windows-Fenster eine virtuelle
Unix-Maschine softwaremässig zur Verfügung. Download Cygwin
1.3.10: http://sources.redhat.com/cygwin/.
Als zweites holt man sich dann OpenLDAP 2.0.23 (Download: www.openldap.org)
und "installiert" das unter Cygwin.
Ich habe das gemacht, und nach einigem Hin und Her lief der SLAPD
unter Cygwin, ich konnte eine Organization und ein paar Persons
in das LDAP-Directory laden und dann mit dem Java-Client von Jarek
Gawor darauf zugreifen. Näheres dazu hier in Kürze....
Installation von OpenLDAP
a) Das downgeloadete File openldap-stable-20020215.tgz in das Cygwin-Verzeichnis
/usr/local kopieren.
b) In /usr/local dann: gunzip openldap-stable-20020215.tgz
c) und weiter: tar -xvf openldap-stable-20020215.tar
d) Wechseln nach /usr/local/openldap-2.0.23
e) Dort: ./configure (OK, wenn mit der Aufforderung zu "make
depend" endet)
f) Weiter: make depend
g) Weiter: make
h) Weiter: make install (das funktionierte bei mir nicht richtig...)
Gelöste Probleme:
a) no such file or directory "ud-"
b) no such file or directory "in.finger"
Beides aus den Make-Files entfernt und ohne diese Teile weitergemacht.
c) install kopiert diverse Files nicht. Per Hand kopiert:
- core.schema nach /usr/local/etc/schema (und die anderen schema-Dateien)
Konfigurieren des Directories
In der Datei slapd.conf eintragen:
include /usr/local/etc/schema/core.schema
include /usr/local/etc/schema/cosine.schema
include /usr/local/etc/schema/inetorgperson.schema
...
pidfile /usr/local/var/slapd.pid
argsfile /usr/local/var/slapd.args
...
database ldbm
suffix ""
...
rootdn "cn=Manager"
rootpw secret
...
directory /usr/local/var/openldap-ldbm
Sinnvoll ist es, ein richtiges Suffix anzugeben, das besagen soll,
dass alle Entries mit diesem Suffix im DN von diesem LDAP-Server
verwaltet werden sollen. Z.B. suffix "o=kr8,c=de". Dann
muss auch der rootdn mit diesem Suffix angegeben werden. Also rootdn
"cn=Manager,o=kr8,c=de". Alle Entries, die man macht müssen
im DM dann mit "o=kr8, c=de" enden.
Wenn man aber eine absolut frei Spielwiese möchte, um alles
mögliche auszuprobieren, empfiehlt sich ein leeres Suffix (wie
oben). Dann können wirklich beliebige Entries aufgenommen werden
(im Rahmes des Schemas).
Starten und Stoppen von SLAPD
Der SLAPD ist der "Standanlone LDAP Daemon", also der
LDAP-Server.
Konfigurationsdatei: .....
Starten: /usr/local/libexec/slapd -d0 & (so funktionierte es
bei mir immer - ohne fork)
Stoppen: kill -INT `pid...`
Füllen des LDAP-Directories
Bei gestartetem SLAPD können nun mit ldapadd Directory-Entries
hinzugefüht werden.
Als Eingabe müssen vorher die Entries als LDIF-Files (RFC2849)
vorbereitet werden.
Meine Datei names entries.ldif sieht so aus:
# Entries for kr8.de
dn: c=de
objectClass: top
objectClass: country
description: Germany
c: de
dn: o=kr8, c=de
objectClass: top
objectClass: organization
description: Die Firma
o: kr8
dn: cn=Dietrich Macht, o=kr8, c=de
mail: dietrich@kr8.de
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
sn: Macht
ou: IT Consulting
description: Das bin ich
cn: Dietrich Macht
dn: cn=Monika Wirth, o=kr8, c=de
mail: monika@wirth.de
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
sn: Wirth
ou: Business Consulting
homePhone: 4911888
telephoneNumber: 69963882
description: Dat is dat Monika
cn: Monika Wirth
Einspielen der Datei: ldapadd -f entries.ldif -D "cn=Manager"
w=secret
Oder mit Jarek Gawors LDAP-Browser mit LDIF Import....
Benutzen des LDAP-Directories
Beispielsweise mit Jarek Gawors java-basiertem LDAP-Client:
8. LDAP für Palm und Lotus Domino
Das LDAP-Schema besteht aus einer Hierarchie von Objektklassen
mit Attributen. Jede Objektklasse und jedes Attribut werden durch
eine weltweit eindeutige OID, die von der ITU-T und der ISO vergeben
werden identifiziert. Zugriff zum OID-Baum über http://www.alvestrand.no/objectid/top.html.
Das Adressbuch von Lotus Notes heisst seit Release 5 Domino Directory
und hat ein Lotus-eigenes LDAP-Schema, das in der Notes-Datenbank
Schema50.nsf dokumentiert ist.
Das Adressbuch des PalmV Handheld (AddressDB.pdb) kann mit Geoff
Silver's pdb2ldiff (http://www.uslinux.net)
ausgelesen und in LDIF-Format umgesetzt werden.
Die Palm-Datenbanken werden beim Hotsync auf den PC kopiert in
den Ordner \userid\backup. Allerdings hat das traditionell eine
Macke: nur die ersten 32 Datenbanken werden gesichert, und der Rest
nicht (man denkt, man hätte eine Sicherheitskopie,...). Im
Fall des Falles benötigt man ein Zusatzprogrämmchen, das
gezielt AddressDB.pdb (oder auch mehr) auf den PC kopiert. Ich
benutze da Pilot-Xfer32 von Tilo Christ.
Die LDIF-Datei kann dann mit LDAP-Clients (z.B. Eudora-Adressbuch,
Outlook-Express-Adressbuch) verwendet werden oder aber in einen OpenLDAP-Directory-Server
geladen werden. Im letzteren Fall muss das Schema erweitert werden.
.......
9. Directory Manager 0.91 (PHP-based Web-Client
for LDAP)
http://sourceforge.net/projects/directorymanager
Short Description: Directory Manager is a tool for managing LDAP
directory data. It includes a schema independant editor, a schema
viewer and some pretty Views of the data. (And an easy way to create
your own custom views). Directory Manager requires an LDAP v3 server.
Der DirectoryManager geht davon aus, das unter dem RootDSN (im
Beispiel: dc=kr8,dc=de) eine ou=people hängt. Wenn das nicht
der Fall ist, Absturz. Im File /view.php kann man das anpassen:
# Do the search
$result = @ldap_search($ds,'ou=People,'. $ldap_base, $search,
$view_fields, 0, 200, 0, LDAP_DEREF_ALWAYS );
Unterhalb von ou=People werden im Schema weitere OU's als Katagorien
erwartet. Im File /includes/ldap.inc kann man das anpassen:
Die aus einem LDAP-Server gelesenen Attributwerte ist Strings nach
Unicode/UTF-8. Wenn die richtig auf einer HTML-Seite dargestellt
werden sollen, muss man für den HTML-Browser charset=UTF-8
mitgeben (charset=ISO8859-1 tut es nicht).
Ich habe im File /includes/shared.inc eine Zeile hinzugefügt: