Active Directory authentication
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.IO;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
class Program
{
static void Main(string[] args)
{
string domain = "mydomain";
string account = "bruce";
string password = "12345678";
Console.WriteLine(IsAuthenticated1(domain, account, password));
Console.WriteLine(IsAuthenticated2(domain, account, password));
Console.WriteLine(IsAuthenticated3(domain, account, password));
Console.Read();
}
static bool IsAuthenticated1(string domain, string account, string password)
{
bool isAuthenticated = false;
DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}", domain), account, password);
try
{
object o = entry.NativeObject;
isAuthenticated = true;
entry.Close();
}
catch (Exception ex)
{
entry.Close();
}
return isAuthenticated;
}
static bool IsAuthenticated2(string domain, string account, string password)
{
bool isAuthenticated = false;
DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}", domain), account, password);
try
{
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = string.Format("(sAMAccountName={0})", account);
SearchResult result = searcher.FindOne();
entry.Close();
isAuthenticated = true;
}
catch (Exception ex)
{
entry.Close();
}
return isAuthenticated;
}
static bool IsAuthenticated3(string domain, string account, string password)
{
try
{
PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain);
return pc.ValidateCredentials(account, password);
}
catch (Exception ex)
{
return false;
}
}
}