Spoonnny
Messages postés4Date d'inscriptionvendredi 27 janvier 2006StatutMembreDerniè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 :
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 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)
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.