AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi uLDAP: Protokollfehler? Wie mit LDAP verbinden?
Thema durchsuchen
Ansicht
Themen-Optionen

uLDAP: Protokollfehler? Wie mit LDAP verbinden?

Ein Thema von Phoenix · begonnen am 8. Jul 2008 · letzter Beitrag vom 12. Nov 2024
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#1

uLDAP: Protokollfehler? Wie mit LDAP verbinden?

  Alt 8. Jul 2008, 09:08
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...
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: uLDAP: Protokollfehler? Wie mit LDAP verbinden?

  Alt 8. Jul 2008, 11:12
Hallo Sebastian,

dein ADsPath scheint falsch aufgebaut zu sein.

Auf meinen lokalen LDAP-Server greife ich so zu:

SQL-Code:
SELECT sn,givenName,departmentNumber
FROM 'LDAP://majestix/ou=accounting,o=sgi,c=us'
WHERE objectClass='inetorgperson'
Der Server lauscht auf dem well known port. Die searchbase liefert dir der Softerra LDAP Browser in der window caption.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#3

Re: uLDAP: Protokollfehler? Wie mit LDAP verbinden?

  Alt 8. Jul 2008, 11:54
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...

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*
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
109 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: uLDAP: Protokollfehler? Wie mit LDAP verbinden?

  Alt 12. Nov 2024, 17:01
Danke für den Hinweis mit dem LDAP Admin den würde ich ja gerne nutzen aber beim Compilieren mit der Delphi version 10.2 gibt es eine Fehlermeldung :

[dcc32 Fehler] Ldif.pas(418): E2010 Inkompatible Typen: 'PBytes' und 'Pointer'

Der Entsprechende Sourcecode ist

Die Procedure
   procedure TLDIF.WriteRecord(Entry: TLdapEntry); und darin die Zeile
Delphi-Quellcode:
    
// hier die Deklaration der Procedure
// procedure TLDIF.PutLine(const attrib: string; const Buffer: PBytes; const DataSize: Cardinal);
  PutLine('dn', [B]@Entry.utf8dn[1] [/B], Length(Entry.utf8dn));
TldapEntry ist eine classe.

nun ich bin da nicht so fit drinn es wäre echt stark wenn sich den Source mal jemanden anschaut
Ich habe den kompletten Source Version 1.8.3 heute von Github runtergeladen. Dann noch weil benötigt die TregExpr-1.182
Angehängte Dateien
Dateityp: zip Ldapadmin.zip (1,44 MB, 1x aufgerufen)
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
109 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: uLDAP: Protokollfehler? Wie mit LDAP verbinden?

  Alt 12. Nov 2024, 17:14
Ich habe die Lösung gefunden
14.03.2021 hat Robert Nelson sich dem Problem schon angenommen

Der Original Link https://sourceforge.net/p/ldapadmin/bugs/54/

I'm using Delphi 10.3 Community Edition. I fixed the compile error by adding a cast to the second arg in line 417.

My Version:

PutLine('dn', PBytes(@Entry.utf8dn[1]), Length(Entry.utf8dn));

Und damit geht es wieder DANKE
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 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