Validate domain user using c#

Hi,
Here am sharing code related to validate a domain user againsta active directory. This is well used for implementing authentication and authorization in asp.net or windows application.

the call should be sent a [domainname]\[username] and [password]

public int VerifyUser(string userName, string password)
{
  try
  {
    string domainName = string.Empty;
    string domainUserName = string.Empty;
    string[] tempString = null;
    string[] delimiter = new string[] { @"\" };

    tempString = userName.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
    if ((tempString.Length == 0) || (tempString.Length == 1))
    {
      return 1;
    }

    domainName = tempString[0];
    domainUserName = tempString[1];
    LDAP.Domain_Authentication imperson = new LDAP.Domain_Authentication(domainUserName, password, domainName);
    if (imperson.IsValid())
    {
      return 2;
    }
    return 3;
  }
  catch (Exception ex)
  {
    return -1;
  }
}

And the LDAP class is as follows

namespace LDAP
{
  using System;
  using System.Collections.Generic;
  using System.Text;
  using System.Security;
  using System.DirectoryServices.AccountManagement;

  public struct Credentials
  {
    public string Username;
    public string Password;
  }
  public class Domain_Authentication
  {
    public Credentials Credentials;
    public string Domain;
    public Domain_Authentication(string Username, string Password, string SDomain)
    {
      Credentials.Username = Username;
      Credentials.Password = Password;
      Domain = SDomain;
    }

    public bool IsValid()
    {
      using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Domain))
      {
        // validate the credentials
        return pc.ValidateCredentials(Credentials.Username, Credentials.Password);
      }
    }
  }
}
Hope this post helps you. Please do comment if any queries/suggestions.

Regards,
Pavan N

Comments

Popular posts from this blog

Download file using WCF REST services

server side printing / PDF conversions using c# and asp.net/wcf service

Finding file size in bytes on serverside using c#