Comment résoudre une exception de nom d’utilisateur ou de mot de passe incorrect lors de l’authentification AD en C# ?

la programmation


J’obtiens une exception « Exception de nom d’utilisateur ou de mot de passe incorrect » lors de l’authentification AD en c#. J’utilise asp.net avec c# et le framework est 4.6.1. J’ai défini le mode d’authentification Windows activé et anonyme désactivé. Je reçois une exception en atteignant le code

SearchResult sr = ds.FindOne();

.Jusqu’à ce qu’il n’y ait aucune exception. J’obtiens le domaine, l’utilisateur du domaine correctement.

Ce que j’ai essayé :

Mon code est le suivant :

Common.WriteDDSLog("ValidateWindowsUser()-Process Started for LoginId:" + txtLoginID.Text);
           //Added by Varun T V
           //Checks the user is active or not before sending credentials to Active Directory
           //Will send request to AD only when user is active
           BLL_Users objUser = new BLL_Users();
           string errorCode = "", errorMsg = "";
           DataSet dsUserExists = new DataSet();
           dsUserExists = objUser.CheckUserActiveOrExists(txtLoginID.Text.Trim(), ref errorCode, ref errorMsg);
           if (dsUserExists.Tables[0].Rows.Count > 0)
           {

               // Directory path
               string path = "LDAP://" + Domain;
               DirectoryEntry de = new DirectoryEntry(path);

               // Provide credentials to get to domain
               de.Username = Domain + "\\" + sUser;
               de.Password = sPassword;
               de.AuthenticationType = AuthenticationTypes.Secure;

               // Search result
               DirectorySearcher ds = new DirectorySearcher(de, null, new string[] { "distinguishedName" });
               SearchResult sr = ds.FindOne();

               if (sr != null)
               {
                   bSearchResult = true;

               }
           }

Solution 1

Aucun message d’erreur n’est mentionné dans la question. Notez que si les informations d’identification sont incorrectes, la méthode ds.FindOne() lèvera une exception, car elle s’appuie sur les informations d’identification de l’utilisateur pour se connecter à AD. Cette méthode n’est peut-être pas le moyen le plus efficace de valider les informations d’identification. Pour des performances améliorées. Si vous travaillez sur .NET 3.5 ou plus récent (oui, vous utilisez 4.6.1), vous pouvez utiliser le System.DirectoryServices.AccountManagement espace de noms et vérifiez facilement vos informations d’identification :

C#
// create a "principal context" - e.g. your domain (could be machine, too)
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"))
{
    // validate the credentials
    bool isValid = pc.ValidateCredentials("myuser", "mypassword");
}

Référence : Lisez tout ici :

[^]

コメント

タイトルとURLをコピーしました