LDAP
Home
Neuigkeiten
Bildung
Labor
Beruf
Freizeit
Mindmaps

Search this Website:

LDAP-Server unter Windows: OpenLDAP unter Cygwin.

Inhalt
  1. Aktuelle Erfahrungen mit LDAP
  2. Was ist eigentlich LDAP?
  3. LDAP-Server
  4. LDAP-Clients
  5. Produkte mit LDAP-Funktionalität
  6. Web-Directories und LDAP-Verzeichnisdienste
  7. Erfahrungsbericht: OpenLDAP unter Cygwin
  8. LDAP für Palm und Lotus Domino (Palm -> LDIF, Domino Schema,...)
  9. Directory Manager 0.91 (PHP-based Web-Client for LDAP)
  10. Im WikiWiki: Mein Adressbuch mit und ohne LDAP

1. Aktuelle Erfahrungen mit LDAP

Zugriff auf den LDAP-Dienst von Bigfoot erfolgt über die URL ldap://ldap.bigfoot.com/cn=dietrich kracht

Bigfoot Unterstützt auch die Replikationsfunktion, die neu in "v3" (LDAPv3) ist.

Zum LDAP-Zugriff benötigt man einen LDAP-fähigen Client.

Der Netscape Messenger 4.7 leistet da einiges (auch Replikation).

Ein in Perl als CGI-Anwendung geschriebenes Web-Frontend ist LDAPexpress Vers 1.30.

Ein in Java geschriebener ganz hervorragender LDAP-Browser/Editor von Jarek Gawor ist: www.iit.edu/~gawojar/ldap or www.mcs.anl.gov/~gawor/ldap. Siehe dazu auch in meinem WikiWiki: LDAPBrowserEditor

 

2. Was ist eigentlich LDAP?

Aus meinem Lexikon:

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 Verzeich­nisse (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 Netz­werk­protokoll 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),
  • HelpDesk (Hardware-/Software-Datenbank),
  • Zugangskontrolle (Building-Security SmartCard,SecuID-Card),
  • Ressourcen­Verwaltung (Räume, Gegenstände, usw.).

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,....

Pionier der LDAP-Technologie ist die University of Michigan.

3. LDAP-Server

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.

 

Netscape Directory Server

Der Netscape Directory Server unterstützt seit langem LDAP.

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.

Microsoft Exchange Server 5.5

Microsofts Exchange Server unterstützt LDAPv3 ....

Windows 2000 Server (Windows NT 5.0)

Für Microsofts neuen NT-Server gibt es die optionale Komponente "Active Directory"., dieses ist eine LDAP-Implementation.

 

4. LDAP-Clients

Es gibt eine kleine bunte handvoll LDAP-Clients. Neuere Übersichten findet man auch bei www.cru.fr/ldap oder www.katalog.uninett.no/programvare/index.en.html

Lfd.Nr. Produkt Technologie Quelle Erläuterungen
1 Netscape Communicator Win32 Netscape/AOL  
2 Outlook Express Win32 Microsoft LDAP-Suche, LDIF-Import (und SSL)
3 Eudora 5.1 Win32 www.qualcomm.com LDAP-Suche, LDIF-Import (und SSL)
4 LdapBrowser Gawojar Java Jarek Gawor Directory-Einträge lesen, suchen, ändern, einfügen, LDIF Import und Export.
5 Directory Manager 0.91 PHP, WebBrowser Sourceforge Directory-Einträge lesen und suchen. Schema-Viewer(?), anpasspar, da PHP Sourcecode
6 CQ Unix/C/GTK biot.com Grafische Benutzeroberfläche (mit GTK)
7 kldap Unix/KDE Oliver Jaun Download from linux.tucows.com
8 Frood Gtk-Perl sourceforge Free.
9 PC-Pages Win32 Dante NameFlow Free. Flexibel kofigurierbar wobei spezielle Objektklassen im LDAP selbst als Konfigurationsspeicher dienen.
10 Likken Java Likken Sourceforge 4-beta. An user-friendly interface for end-user access to LDAP directories.
11 GUM Java GUM Kommerziell, "Group and User Management for LDAP". Auch Schema-Bowsing und -Editing
12 Ldap Express Perl ProgressiveSoft Freeware
13 web2ldap PHP Michael Ströder Web-Frontend für LDAP-Abfragen in PHP
14 LDAP Administrator Win32 Softerra Kommerziell, Sehr gelobt, Mächtiger Funktionsumfang.

Zum Thema LDAP und Outlook siehe auch www.slipstick.com.

 

5. Produkte mit LDAP-Funktionalität

Windows 95/98

Suchen Personen .... Windows-Adressbuch.....  URL mit ldap://ldap.switchboard.com

WS_Ping ProPack von Ipswitch

Enthält einen schönen LDAP-Client mit Suchfunktionen.

pcAnywhere

pcAnywhere (seit Version 9) sucht über LDAP nach pcAnywhere-Hosts im Internet.

 

6. Web Directories und LDAP Verzeichnisdienste

Wer mit E-Mail arbeitet benötigt ein Adressbuch. Adressbücher müssen in  allgemeinem Zugriff sein bzw. physische Kopien müssen synchronisiert werden.

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:

- slapd.exe nach /usr/local/libexec

- ldapadd.exe, ldapdelete.exe, ldapmodify.exe, ldapsearch.exe, slapadd.exe,...nach /usr/local/bin

- slapd.conf nach /usr/local/etc/openldap

- 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:

 

Screenshot

 

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.

 

My Configuration File /includes/config.inc

           <?
             $ldap_base = "dc=kr8,dc=de";
             $bind_dn = "cn=Manager";
             $bind_pass = "secret";
             $bind_server = "localhost";
             $default_areacode = "040";
             $basepath = 'd:/webshare/wwwroot/kracht/directorymanager-0.91';
             $defaultpage = 'view.php?view=List';
             $ldaptemplates = "d:/cygwin/usr/local/etc/openldap/ldaptemplates.conf";
           ?>

Customization

 

1. Vorausgesetzte Schema-Struktur

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:

    function category_dropdown($ds, $attribute, $selected) {
      global $ldap_base;
      $returns = '';
      $cleanlist = array();
      $result = @ldap_list( $ds, "ou=People,". $ldap_base,
                 "($attribute=*)", array("$attribute"), 0, 500 );
      

2. Characterset UTF-8

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:

       echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';

3. Oberfläche

Um den Namen des LDAP-Servers im Header mit auszugeben wird das File /includes/header.inc angepasst:

       <body topmargin="0" leftmargin="0">
       <TABLE border=0 width="100%" cellspacing=0 cellpadding=0>
       <TR><TH class=box><H1>Directory Server: <?= $bind_server ?></H1></Th></TR>
       <TR><TD>&nbsp;</TD></TR>
       </TABLE>

Dazu muss auch noch in /includes/shared.inc $bind_server als global hinzugefügt werden:

     function site_header($title) {
       global $basepath;
       global $robots;
       global $description;
       global $keywords;
       global $bind_server;

[Home]  [Neuigkeiten] [Bildung]  [Labor] [Beruf]  [Freizeit] [Mindmaps]

Dietrich Kracht. Copyright © 2006. All rights reserved. Page last modified: 2004-12-11 09:18:09