Hi,
ich benutze die wldap32.dll (via
diesem Artikel / dieser Unit (uLdap.pas)).
Nur wenn ich auf den LDAP-Server (openldap) verbinden will, schmeisst mir das Ding immer eine
Exception alá 'Protokollfehler'. Ich brauche hier übrigens nur lesenden Zugriff (ohne Benutzerkonto, und ja: das Directory erlaubt den anonymen Zugriff).
Background - weil die Frage in anderen Threads des öfteren auftrat: LDAP = Lightweight Directory
Access Protokoll. LDAP ist das Protokoll, mit dem man solche Verzeichnisse (im Prinzip eine hierarchische Datenbank), auslesen und verändern kann.
Eine
ADO-Verbindung zum LDAP (wie z.B.
mit diesem Artikel hier) will auch nicht klappen. Hier behauptet er immer, die "Tabelle" sei nicht vorhanden. Als Statement benutze ich
Code:
SELECT displayname FROM ‘LDAP://
dc=meine,
dc=Angaben’
. Die
dc-Angaben sind korrekt, da ich z.B. mit dem
Softerra LDAP Browser mit den gleichen Angaben einwandfrei verbinden und durch das LDAP browsen kann.
Wer hat mir einen Link wie ich mit möglichst Hausmitteln (bzw. möglichst freien Units) auf einen OpenLDAP-Server zugreifen kann? Oder noch besser, wie ich den Protokollfehler verhindern kann den mir die uLDAP schmeisst?
Ziel ist es ein kleines Tool zu haben, welches Daten aus dem LDAP-Master in unsere Datenbank kopiert und später regelmäßig aktualisiert. Wenn der Aufwand zu groß wird, dann schreiben wir zur Not dieses Tool in C#. In Delphi wär halt schöner, da wir das dann gleich in die Anwendung packen könnten...
Edit Nachtrag: Ich habe jetzt auch ADSI probiert. Nur anscheinend kann das
ActiveX-Gedöns von Microsoft nicht mit OpenLDAP-Servern sprechen. Hier bekomme ich immer den fehler, dass der übermittelte Verzeichnispfad ungültig sei. Angaben waren: ldap://server:port/
dc=meine,
dc=Angaben [bzw. auch gestestet:
WinNT:// als Protokoll und server jeweils mit und ohne Portangabe, also alle möglichen Kombinationen]. Ist LDAP mit Delphi wirklich so kompliziert? In .NET sind das nur ein paar Zeilen...