using System; using System.Collections.Generic; using System.Text; using System.DirectoryServices.AccountManagement; using System.Security.Principal; using System.DirectoryServices; public class SessionController { public static bool LoadSession(string userName, string password, string domainControllerServerName) { var activeDirectoryGroups = new List<string>(); using (var pc = new PrincipalContext(ContextType.Domain, domainControllerServerName)) { var validated = pc.ValidateCredentials(userName.Trim(), password.Trim()); if (!validated) return false; var user = UserPrincipal.FindByIdentity(pc,IdentityType.SamAccountName, userName); if (user == null) return false; // get properties from active directory user. using (var entry = (DirectoryEntry)user.GetUnderlyingObject()) { using (var search = new DirectorySearcher(entry)) { search.PropertiesToLoad.Add("memberOf"); var result = search.FindOne(); if (result != null) { var groupCount = result.Properties["memberOf"].Count; for (int i = 0; i < groupCount; i++) { var group = result.Properties["memberOf"][i].ToString().ToLower().Replace("cn=", string.Empty).Trim(); group = group.Substring(0, group.IndexOf(",")); if (activeDirectoryGroups.Contains(group)) continue; activeDirectoryGroups.Add(group); } // do something with the captured active directory groups for this user. } } } } return true; } }