LDAP steht für Lightweight Directory Access Protocol und ist
ein Protokoll um auf "Directory Servers" - "Verzeichnis-
Server" - zuzugreifen.
Das Verzeichnis ist dabei eine spezielle Art einer Datenbank,
das Informationen in einer Baumstruktur bereithält.
Das Konzept ist dabei ähnlich der Verzeichnisstruktur Ihrer
Festplatte, mit der Ausnahme, daß in diesem Zusammenhang
das Wurzelverzeichnis "Die Welt" ist und die
Unterverzeichnisse der ersten Ebene "Länder" abbilden.
Die weiteren Verzeichnisse unterhalb der Länderebene enthalten
Einträge für Firmen, Organisationen oder Städte. Noch tiefer
geschachtelt stehen Verzeichniseinträge für Menschen und
vielleicht für Ausstattung oder Dokumente.
Um auf eine Datei in einem Unterverzeichnis auf Ihrer
Festplatte zu verweisen, könnten Sie eine Schreibweise wie
folgt verwenden
/usr/local/meine_daten/doku
Die Schrägstriche markieren jeden Teil in diesem Verweis und
die Sequenz wird von links nach rechts gelesen.
Das entsprechende Gegenstück zu einer voll qualifizierten
Dateireferenz ist in LDAP der "Eindeutige Name"
("distinguished name"), der Einfachheit halber als "dn"
bezeichnet.
Ein Beispiel für einen solchen dn könnte sein
cn=Hans Mustermann,ou=Buchhaltung,o=Meine Firma,c=DE
Das Komma markiert jeden Teil in diesem Verweis und die
Sequenz wird von rechts nach links gelesen.
Diesen dn würden Sie wie folgt lesen ...
Land = DE
Organisation (organisation) = Meine Firma
Organisationseinheit (organisational unit) = Buchhaltung
Einfacher Name (commonName) = Hans Mustermann
In der gleichen Weise, in der es keine allgemeinverbindlichen
Regeln gibt, wie Sie die Verzeichnisstruktur Ihrer Festplatte
organsieren, kann der Verwalter eines Verzeichnis-Servers jede
beliebige Struktur implementieren, die für den Einsatzzweck
sinnvoll ist.
Trotzdem gibt es einige Konventionen die benutzt werden.
Die Botschaft ist folgende: Sie können keinen Code schreiben
um auf einen Verzeichnis-Server zuzugreifen, ohne etwas über
dessen Struktur zu wissen. Genauso wenig können Sie eine
Datenbank nutzen ohne Kenntnis darüber, was in derselben
vorhanden ist.
Informationen von einem Verzeichnis-Server beziehen für alle
Einträge bei denen der Nachname mit "S" beginnt. Darstellung
eines Auszugs mit Name und Email-Adresse.
Beispiel 1. LDAP Such-Beispiel <?php
// Grundlegende Abfolge bei LDAP ist verbinden, binden, suchen,
// interpretieren des Sucheergebnisses, Verbindung schließen
echo "<h3>LDAP query Test</h3>";
echo "Verbindung ...";
$ds=ldap_connect("localhost"); // muss ein gültiger LDAP Server
// sein!
echo "Ergebnis der Verbindung: ".$ds."<p>";
if ($ds) {
echo "Bindung ...";
$r=ldap_bind($ds); // das ist ein "anonymer" bind,
// typischerweise nur Lese Zugriff
echo "Ergebnis der Bindung ".$r."<p>";
echo "Suche nach (sn=S*) ...";
// Suchen des Nachnamen-Eintrags
$sr=ldap_search($ds,"o=Meine Firma, c=DE", "sn=S*");
echo "Ergebnis der Suche ".$sr."<p>";
echo "Anzahl gefundenen Einträge ".ldap_count_entries($ds,$sr)."<p>";
echo "Einträge holen ...<p>";
$info = ldap_get_entries($ds, $sr);
echo "Daten für ".$info["count"]." Items gefunden:<p>";
for ($i=0; $i<$info["count"]; $i++) {
echo "dn ist: ". $info[$i]["dn"] ."<br>";
echo "erster cn Eintrag: ". $info[$i]["cn"][0] ."<br>";
echo "erster email Eintrag: ". $info[$i]["mail"][0] ."<p>";
}
echo "Verbindung schließen";
ldap_close($ds);
} else {
echo "<h4>Verbindung zu LDAP Server nicht möglich</h4>";
}
?> |
|
Sie müssen sich die LDAP Client Bibliotheken herunterladen und
übersetzen. Sie können entweder das ldap-3.3 Packet von der
University of Michigan oder das Netscape Directory SDK 3.0
verwenden. Ebenso müssen Sie Ihr PHP mit LDAP Unterstützung
aktiviert neu übersetzen bevor die PHP LDAP-Aufrufe
funktionieren.
Bevor Sie die LDAP Aufrufe benutzen können, müssen Sie folgendes
wissen...
Den Namen oder die Adresse des Verzeichnis-Servers den Sie
benutzen wollen
Den "Basis dn" des Servers (den Teil des Weltverzeichnisses,
das auf diesem Server eingerichtet ist, das könnte "o=Meine
Firma,c=DE" sein.
Brauchen Sie ein Passwort um auf den Server zuzugreifen?
(Viele Server bieten Lesezugriff für einen "anonymen bind",
verlangen aber ein Passwort für alles weitere)
Die typische Abfolge von LDAP Aufrufen in einer Anwendung folgen
diesem Muster
ldap_connect() // Aufbau einer Verbindung zum Server
connection to server
|
ldap_bind() // anonymes oder authentifiziertes "login"
|
mache irgendwas, z.B. Verzeichnis durchsuchen oder aktualisieren
und stelle das Ergebnis dar
|
ldap_close() // "logout"
Viele Informationen finden Sie unter
Das Netscape SDK enthält einen hilfreichen Programmer´s Guide im
.html Format.