uLDAP: Protokollfehler? Wie mit LDAP verbinden?
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:
. 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.
SELECT displayname FROM ‘LDAP://dc=meine,dc=Angaben’
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... |
Re: uLDAP: Protokollfehler? Wie mit LDAP verbinden?
Hallo Sebastian,
dein ADsPath scheint falsch aufgebaut zu sein. Auf meinen lokalen LDAP-Server greife ich so zu:
SQL-Code:
Der Server lauscht auf dem well known port. Die searchbase liefert dir der Softerra LDAP Browser in der window caption.
SELECT sn,givenName,departmentNumber
FROM 'LDAP://majestix/ou=accounting,o=sgi,c=us' WHERE objectClass='inetorgperson' Freundliche Grüße |
Re: uLDAP: Protokollfehler? Wie mit LDAP verbinden?
Die Verbindung läuft jetzt (mittels ADSI und der AdsHlp Unit).
Ich kann zumindest mal alle o= - Einträge unterhalb meiner dc-Angaben auflisten. Jetzt muss ich mich halt in die Objekte einarbeiten. Eigentlich sind die Elemente die ich da aufliste selber Container und enthalten weitere Childs - aber auf dem Container erhalte ich irgendwie keinen Enumerator... :gruebel: Und insbesondere ein QueryInterface auf IAdsContainer klappt nicht (Interface wird nicht unterstützt), was mich wundert. Weil es dort definitiv Childs gibt ;-) Edit Nachtrag: Ah, geht nu. Irgendwas hatte sich verklemmt - jetzt nach der Mittagspause läuft es so wie es soll *g* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz