Mythily
Mythily

Reputation: 57

How to check the valid user's password matches with active directory

I'm passing username and password to check whether a user is valid from Active Directory.

Here is my code :

  private bool ValidUser(string name, string userPwd)
    {

        string UserName = "XXXXXXXXXX";
        string Password = "XXXXXXXXXXXXX";
        DirectoryEntry objRootEntry = new DirectoryEntry("XXXXXXXX.com", UserName, Password);
        DirectorySearcher objADSearcher = new DirectorySearcher(objRootEntry);
        objADSearcher.Filter = ("(&(sAMAccountType=xxxxxxxxx)(samAccountName=" + name + "))");
        SearchResult objResult = objADSearcher.FindOne();
        DirectoryEntry objLoginEntry = (objResult != null) ? objResult.GetDirectoryEntry() : null;          
        if (objLoginEntry != null)
        {
            return true;
        }
        return false;
    }

Now it checks the user name alone.I need to check whether the entering password (userPwd) matches with the Active directory. How to do that.

Please help me out.

Upvotes: 0

Views: 3014

Answers (1)

V2Solutions - MS Team
V2Solutions - MS Team

Reputation: 1127

//You are entering password while finding in Directory entry is enough. Don't need to check again

Check this detail code

public bool ValidateUser(string domain, string username, string password,string LdapPath, out string Errmsg)
        {
            Errmsg = "";
            string domainAndUsername = domain + @"\" + username;
            DirectoryEntry entry = new DirectoryEntry(LdapPath, domainAndUsername, password);
            try
            {
                // Bind to the native AdsObject to force authentication.
                Object obj = entry.NativeObject;
                DirectorySearcher search = new DirectorySearcher(entry);
                search.Filter = "(SAMAccountName=" + username + ")";
                search.PropertiesToLoad.Add("cn");
                SearchResult result = search.FindOne();
                if (null == result)
                {
                    return false;
                }
                // Update the new path to the user in the directory
                LdapPath = result.Path;
                string _filterAttribute = (String)result.Properties["cn"][0];
            }
            catch (Exception ex)
            {
                Errmsg = ex.Message;                   
                throw new Exception("Error authenticating user." + ex.Message);
            }

        }

Upvotes: 2

Related Questions