// create class library using System; using System.Collections.Generic; using System.Text; using System.DirectoryServices; namespace UserAuthentication { public class ActiveDirectoryValidator { private string _path; private string _filterAttribute; public ActiveDirectoryValidator(string path) { _path = path; } public bool IsAuthenticated(string domainName, string userName, string password) { string domainAndUsername = domainName + @"\" + userName; DirectoryEntry entry = new DirectoryEntry(_path, 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 _path = result.Path; _filterAttribute = (String)result.Properties["cn"][0]; } catch (Exception ex) { throw new Exception("Login Error: " + ex.Message); } return true; } } } // usage using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using UserAuthentication; // add reference of above class library public partial class LogOn : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string domainUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name; string[] paramsLogin = domainUser.Split('\\'); txtUser.Text = paramsLogin[1].ToString(); txtDomain.Text = paramsLogin[0].ToString(); } } protected void btnLogon_Click(object sender, EventArgs e) { try { this.AutenticateUser(txtDomain.Text, txtUser.Text, txtPassword.Text); } catch (Exception ex) { lblError.Text = ex.Message; lblError.Visible = true; } } private void AutenticateUser(string domainName, string userName, string password) { // Path to you LDAP directory server. // Contact your network administrator to obtain a valid path. string adPath = "LDAP://" + System.Configuration.ConfigurationSettings.AppSettings["DefaultActiveDirectoryServer"]; ; ActiveDirectoryValidator adAuth = new ActiveDirectoryValidator(adPath); if (true == adAuth.IsAuthenticated(domainName, userName, password)) { // Create the authetication ticket FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(60), false, ""); // Now encrypt the ticket. string encryptedTicket = FormsAuthentication.Encrypt(authTicket); // Create a cookie and add the encrypted ticket to the // cookie as data. HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); // Add the cookie to the outgoing cookies collection. HttpContext.Current.Response.Cookies.Add(authCookie); // Redirect the user to the originally requested page HttpContext.Current.Response.Redirect(FormsAuthentication.GetRedirectUrl(userName, false)); } } }