Acceder à un annuaire ldap en delphi

alfa66 Messages postés 1 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 13 juin 2003 - 13 juin 2003 à 09:44
g2loq Messages postés 10 Date d'inscription vendredi 12 juillet 2002 Statut Membre Dernière intervention 15 mars 2005 - 2 mars 2005 à 15:18
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

padritoo2 Messages postés 1 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 30 juin 2004
30 juin 2004 à 08:37
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.
0
cs_Ivanov Messages postés 8 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 1 avril 2009
10 janv. 2005 à 22:52
Bonjour,

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

Merci
0
cs_Ivanov Messages postés 8 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 1 avril 2009
10 janv. 2005 à 23:10
Bonjour,

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

Merci
0
g2loq Messages postés 10 Date d'inscription vendredi 12 juillet 2002 Statut Membre Dernière intervention 15 mars 2005
2 mars 2005 à 14:57
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;


//------------------------------------------------------------------------------
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
g2loq Messages postés 10 Date d'inscription vendredi 12 juillet 2002 Statut Membre Dernière intervention 15 mars 2005
2 mars 2005 à 15:13
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
0
g2loq Messages postés 10 Date d'inscription vendredi 12 juillet 2002 Statut Membre Dernière intervention 15 mars 2005
2 mars 2005 à 15:18
N.B : il faut faire des recherche autour du mot clef ADSI pour plus d'info.
0