Bonjour,

J'écris une interface web qui doit permettre de changer le mot de passe de l'utilisateur dans Active Directory, même si ce mot de passe est périmé depuis quelques temps.
Je ne peux donc pas utiliser l'authentification via IIS, qui ne permettrait pas la connection avec un mot de passe périmé. je me connecte donc directement à Active Directory via une requête LDAP.

Je tombe sur l'erreur typique : "Le domaine spécifié n'existe pas ou n'a pas pu être contacté.", quand j'appelle la fonction suivante, qui verifie que l'utilisateur qui a rentré son login/mdp existe dans AD :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public bool IsAuthenticated(string LDAPPATH, string login, string pwd) {
 
            DirectoryEntry Entry = null;
            DirectorySearcher Search1 = null;
            Error = "";
 
            try {
                DirectoryEntry Entry Entry = new DirectoryEntry(LDAPPATH, login, pwd);
                Entry.AuthenticationType = AuthenticationTypes.None;
                Search1 = new DirectorySearcher(Entry);
                Search1.SearchScope = SearchScope.Subtree;
                Search1.CacheResults = false;
                Search1.Filter = "(&(objectClass=user)(mail=" + login + "))";
                Search1.PropertiesToLoad.Add("mail");
 
                SearchResult result = Search1.FindOne();  // exception levée à cette ligne
                if (result == null) {
                    Error = "Utilisateur pas trouvé dans AD !!";
                    return false;
                }
 
            } catch (Exception ex) {
                Error = ex.Message + "; <pre>" + ex.StackTrace + "</pre>";
                return false;
            }
            return true;
        }
Je précise que le LDAPPATH utilisé est valide (un programme en C# avec la même fonction marche sans problèmes.

Dans mon fichier web.config, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
    <authentication mode="None"/>
    <identity impersonate="true" />
et dans les propriétés de mon site web, j'ai activé la connexion anonyme, laissé le nom d'utilisateur par défaut avec son mot de passe, autorisé la vérification de mot de passe par IIS, et désactivé l'authentification intégrée Windows.
Je crois que le problème vient de ces derniers réglages.
La gestion de l'authentification n'est pas très claire dans mon cas : je ne veux pas que IIS gère l'authentification, mais la page ASP.NET doit avoir assez de droits pour que chaque utilisateur puisse modifier son mot de passe.
Je me demande, entre autres, si je dois utiliser l'impersonnification.

Merci pour vos conseils/éclaircissements