LDAPS et mot de passe

Spoonnny Messages postés 4 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 4 octobre 2013 - 4 oct. 2013 à 12:50
 Spoonnny - 18 nov. 2013 à 15:36
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

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
18 nov. 2013 à 14:19
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...
0
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.
0
Rejoignez-nous