LDAPS et mot de passe

Signaler
Messages postés
4
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
4 octobre 2013
-
 Spoonnny -
Bonjour,


Bonjour à tous

Voici mon problème. Sur un site web, j'ai une page de Login qui doit me permettre de me connecter à un Active Directory distant, ce qui veut dire que le site web n'est pas sur le domaine de l'AD.

Pour cela j'utilise un login générique (usernameLDAP et passwordLDAP) qui me permet de requêter l'AD via le code si dessous

System.DirectoryServices.Protocols.LdapConnection con = new System.DirectoryServices.Protocols.LdapConnection(new System.DirectoryServices.Protocols.LdapDirectoryIdentifier(ipServerLDAP + ":" + portLDAP));
con.Credential = new System.Net.NetworkCredential(usernameLDAP, passwordLDAP);
con.SessionOptions.SecureSocketLayer = true;
con.SessionOptions.ProtocolVersion = 3;
con.SessionOptions.VerifyServerCertificate = new System.DirectoryServices.Protocols.VerifyServerCertificateCallback(ServerCallback);
con.AuthType = System.DirectoryServices.Protocols.AuthType.Basic;
con.Bind();
SearchRequest request = new SearchRequest(searchDomainLDAP, "(samaccountname=" + username + ")", System.DirectoryServices.Protocols.SearchScope.Subtree, attribs);
SearchResponse response = (SearchResponse)con.SendRequest(request);

Tout fonctionne nickel sauf qu'une fois connecté, j'aimerai maintenant vérifier si la personne qui se connecte (username) est bien connue du LDAP. Je pensais utiliser le SearchRequest en filtrant sur le samaccountname et sur le mot de passe, genre :

SearchRequest request = new SearchRequest(searchDomainLDAP, "(samaccountname=" + username + ")(&(password=" + mot_de_passe + "))",

Mais pour le mot de passe je n'ai pas trouvé l'attribut.
Existe-t-il ou faut-il faire autrement ?

Merci pour votre aide

2 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Salut,

je n'ai jamais trouvé un quelconque mot de passe en requêtant ldap.
J'ai fini par utiliser le champ mail pour savoir si un utilisateur était présent (il y a aussi l'uid)

(&(objectClass=dominoPerson)(mail=unmail@dom.com))

Voici Les classes et filtres que j'ai pu utilisé :

Classes :
dominoPerson
inetOrgPerson
organizationalPerson
person
top
Filtres :
cn
mailDomain
sn
uid
mail
givenName


bye...
Merci.
En fait j'ai trouvé le truc. Il ne faut pas utiliser de login générique pour se connecter mais il faut utiliser le login/password de l'utilisateur directement en spécifiant bien le domaine sur lequel on se connecte (bizarre d'ailleurs car on se connecte déjà sur ce domaine en spécifiant l'adresse)
Donc la ligne
con.Credential = new System.Net.NetworkCredential(usernameLDAP, passwordLDAP);

devient
con.Credential = new System.Net.NetworkCredential(username , passworduser, domaine);

S'il y a une exception de créée cela veut dire qu'il y a un pb d'identification.