Acceder à un annuaire ldap en delphi

Signaler
Messages postés
1
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
13 juin 2003
-
Messages postés
10
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
15 mars 2005
-
SVP

Est il possible d'accéder à un annuaire LDAP via un programme DELPHI, et si oui :
quelles procédures , méthodes, etc doit on utiliser et comment ????????

Je suis dans l'impasse

MERCI D'AVANCE

6 réponses

Messages postés
1
Date d'inscription
mardi 29 juin 2004
Statut
Membre
Dernière intervention
30 juin 2004

bonjour, je voudrais savoir si tu as là réponse a la question ke tu as posé il y a maintenant un an.
j'ai aujourd'hui le meme probleme donc si tu pouvais éclairer ma lanterne ce serait une aide fort apreciable.
merci.
Messages postés
8
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
1 avril 2009

Bonjour,

Quelqu'un a t-il une solution (+exemple) pour accéder à un LDAP via Delphi?

Merci
Messages postés
8
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
1 avril 2009

Bonjour,

Quelqu'un a t-il une solution (+exemple) pour accéder à un LDAP via Delphi?

Merci
Messages postés
10
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
15 mars 2005

Il faut l'adapter selon les bessoins. Je suis parti d'un VB script et je l'ai adapté, non sans mal :-)

//------------------------------------------------------------------------------
function Rechercher_ds_ActiveDirectory(nom_serveur_LDAP, login_a_rechercher, nom_a_rechercher, separateur_champs, separateur_ligne : String): string;
var temp, rs,conn, com : Variant;
s,separa,separa_ligne,chaine_resulat : string; //s2,
i, j : integer;
sPathLDAP,sLogin,sNom : string;
begin


sPathLDAP := nom_serveur_LDAP;
sLogin := login_a_rechercher;
sNom := nom_a_rechercher;
separa := separateur_champs;
separa_ligne := separateur_ligne;
chaine_resulat:= '';



conn := CreateOleObject('ADODB.Connection');
com := CreateOleObject('ADODB.Command');


try


conn.Open ('Provider=ADSDSOObject; User Id=DOMAINE\LOGIN; Password=PWD;');


com.ActiveConnection := conn;



if sNom = '' then
begin
//rechercher login sur sPathLDAP='LDAP://nomServeurLdap' ou sPathLDAP='LDAP://nomServeurLdap/DC=...,DC=...,DC=...'
Com.CommandText :='select l,telephoneNumber,cn,mail,sn,sAMAccountName from '''+ sPathLDAP +''' where SamAccountName=''' + sLogin + '''' ;
end //if sNom = '' then
else
begin
//rechercher nom sur sPathLDAP='LDAP://nomServeurLdap' ou sPathLDAP='LDAP://nomServeurLdap/DC=...,DC=...,DC=...'
Com.CommandText :='select telephoneNumber,cn,mail,sn,sAMAccountName from '''+ sPathLDAP +''' where sn=''' + sNom + '''' ;
end; //else if sNom = '' then


Com.Properties['SearchScope'] := 2;
rs := Com.Execute;





//recuperation et mise en forme des données (séparer par separateur_champs=';' et separateur_ligne='|')
While Not rs.EOF do
begin


For i := 0 To rs.Fields.Count - 1 do
begin
If (VarIsArray(rs.Fields[i].Value)) And Not (VarIsNull(rs.Fields[i].Value)) Then
begin
s := ''; temp :rs.Fields[i] + IntToStr(i) + ' ' + rs.Fields[i].value;
For j := VarArrayLowBound(temp, 1) To VarArrayHighBound(temp, 1) do
begin
If (s <> '') Then s := s + ', ';
s := s + temp[j];
end;
chaine_resulat := chaine_resulat + s; //newLine.SubItems.Add(s);
end
Else
If (Not (VarIsNull(rs.Fields[i].Value))) Then
begin
If (s = '') Then s := s + IntToStr(i) + ' = ';
//s2 := rs.Fields[i]; //afficher le nom du champ non la valeur ?
chaine_resulat := chaine_resulat + rs.Fields[i].Value + separa ;
//memo1.Lines.Add (IntToStr(i) + ' = ' + rs.Fields[i].Value + separa); //newLine.SubItems.Add(rs.Fields[i].Value);
end
else chaine_resulat := chaine_resulat + separa ;
//memo1.Lines.Add (IntToStr(i) + ' = ' + separa);


end; //For i := 1 To rs.Fields.Count - 1 do


chaine_resulat := chaine_resulat + separa_ligne ;
rs.MoveNext;


end; //While Not rs.EOF do


Rs := NULL;
finally
com := NULL;
conn.Close;
conn := NULL;
end;


//showMessage (chaine_resulat);
Result := chaine_resulat;
end;


//------------------------------------------------------------------------------
Messages postés
10
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
15 mars 2005

A rajouter au préalable

interface
uses
SysUtils,
Variants,
Dialogs,


ComObj, ActiveX,


ActiveDs_TLB; //ADSI








//------------------------------------------------------------------------------
function ADsGetObject(lpszPathName: PWideChar; const riid: TGUID; out obj): HResult; stdcall; external 'activeds.dll';
function ADsOpenObject(lpszPathName: PWideChar; lpszUserName: PWideChar; lpszPassword: PWideChar; dwReserved: LongInt; const riid: TIID; out obj): HResult; stdcall; external 'activeds.dll';


...





implementation
Messages postés
10
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
15 mars 2005

N.B : il faut faire des recherche autour du mot clef ADSI pour plus d'info.