public bool TryLoadLDAPUsers() { try { if (!Settings.EnableLdapAuthentication) { return(false); } if (!LdapHelper.IsConnected) { LdapHelper.Connect(); } var users = LdapHelper.GetUsers(); foreach (var user in users) { if (string.IsNullOrEmpty(user.Sid)) { AllSkipedDomainUsers.Add(user, LdapSettingsStatus.WrongSidAttribute); continue; } if (!CheckLoginAttribute(user, Settings.LoginAttribute)) { AllSkipedDomainUsers.Add(user, LdapSettingsStatus.WrongLoginAttribute); continue; } if (!Settings.GroupMembership) { AllDomainUsers.Add(user); continue; } if (!Settings.UserAttribute.Equals(LdapConstants.RfcLDAPAttributes.DN, StringComparison.InvariantCultureIgnoreCase) && !CheckUserAttribute(user, Settings.UserAttribute)) { AllSkipedDomainUsers.Add(user, LdapSettingsStatus.WrongUserAttribute); continue; } AllDomainUsers.Add(user); } if (AllDomainUsers.Any()) { PrimaryGroupId = AllDomainUsers.First().GetValue(LdapConstants.ADSchemaAttributes.PRIMARY_GROUP_ID) as string; } return(AllDomainUsers.Any() || !users.Any()); } catch (ArgumentException) { _log.ErrorFormat("TryLoadLDAPUsers(): Incorrect filter. userFilter = {0}", Settings.UserFilter); } return(false); }
public List <LdapObject> FindUsersByAttribute(string key, IEnumerable <string> value, StringComparison comparison = StringComparison.InvariantCultureIgnoreCase) { var users = new List <LdapObject>(); if (!AllDomainUsers.Any() && !TryLoadLDAPUsers()) { return(users); } return(AllDomainUsers.Where(us => !us.IsDisabled && value.Any(val => string.Equals(val, (string)us.GetValue(key), comparison))).ToList()); }
private string LoadLDAPDomain() { try { if (!Settings.EnableLdapAuthentication) { return(null); } if (!LdapHelper.IsConnected) { LdapHelper.Connect(); } string ldapDomain; if (AllDomainUsers.Any()) { ldapDomain = AllDomainUsers.First().GetDomainFromDn(); if (!string.IsNullOrEmpty(ldapDomain)) { return(ldapDomain); } } ldapDomain = LdapHelper.SearchDomain(); if (!string.IsNullOrEmpty(ldapDomain)) { return(ldapDomain); } ldapDomain = LdapUtils.DistinguishedNameToDomain(Settings.UserDN); if (!string.IsNullOrEmpty(ldapDomain)) { return(ldapDomain); } ldapDomain = LdapUtils.DistinguishedNameToDomain(Settings.GroupDN); if (!string.IsNullOrEmpty(ldapDomain)) { return(ldapDomain); } } catch (Exception ex) { _log.ErrorFormat("LoadLDAPDomain(): Error: {0}", ex); } return(null); }
private LDAPObject FindUserByMember(string userAttributeValue) { if (!AllDomainUsers.Any() && !TryLoadLDAPUsers()) { return(null); } return(AllDomainUsers.FirstOrDefault(u => Convert.ToString(u.InvokeGet(_settings.UserAttribute)) .Equals(userAttributeValue, StringComparison.InvariantCultureIgnoreCase))); }
private LdapObject FindUserByMember(string userAttributeValue) { if (!AllDomainUsers.Any() && !TryLoadLDAPUsers()) { return(null); } return(AllDomainUsers.FirstOrDefault(u => u.DistinguishedName.Equals(userAttributeValue, StringComparison.InvariantCultureIgnoreCase) || Convert.ToString(u.GetValue(Settings.UserAttribute)).Equals(userAttributeValue, StringComparison.InvariantCultureIgnoreCase))); }
public List <UserInfo> GetDiscoveredUsersByAttributes() { var users = new List <UserInfo>(); if (!AllDomainUsers.Any() && !TryLoadLDAPUsers()) { return(users); } var usersToAdd = AllDomainUsers.Select(ldapObject => ldapObject.ToUserInfo(this, _log)); users.AddRange(usersToAdd); return(users); }
public List <UserInfo> GetDiscoveredUsersByAttributes() { var users = new List <UserInfo>(); if (!AllDomainUsers.Any() && !TryLoadLDAPUsers()) { return(users); } var usersToAdd = AllDomainUsers.Select(CreateUserInfo); users.AddRange(usersToAdd); return(users); }
private List <LdapObject> FindUsersByPrimaryGroup() { if (!AllDomainUsers.Any() && !TryLoadLDAPUsers()) { return(null); } return (AllDomainUsers.Where( lu => { var primaryGroupId = lu.GetValue(LdapConstants.ADSchemaAttributes.PRIMARY_GROUP_ID) as string; return !string.IsNullOrEmpty(primaryGroupId) && primaryGroupId.Equals(PrimaryGroupId, StringComparison.InvariantCultureIgnoreCase); }) .ToList()); }
private List <LdapObject> FindUsersByPrimaryGroup(string sid) { _log.Debug("LdapUserImporter.FindUsersByPrimaryGroup()"); if (!AllDomainUsers.Any() && !TryLoadLDAPUsers()) { return(null); } return (AllDomainUsers.Where( lu => { var primaryGroupId = lu.GetValue(LdapConstants.ADSchemaAttributes.PRIMARY_GROUP_ID) as string; return !string.IsNullOrEmpty(primaryGroupId) && sid.EndsWith(primaryGroupId); }) .ToList()); }
public void SyncUserGroupMembership(UserInfo user) { if (user == null || !_settings.GroupMembership || AllDomainGroups == null || !AllDomainGroups.Any() && !TryLoadLDAPGroups() || !AllDomainUsers.Any() && !TryLoadLDAPUsers()) { return; } var domainUser = AllDomainUsers.FirstOrDefault(u => u.Sid.Equals(user.Sid)); if (domainUser == null) { return; } var userAttributeValue = _ldapHelper.GetUserAttribute(domainUser, _settings.UserAttribute); foreach (var domainGroup in AllDomainGroups) { var sid = domainGroup.Sid; var members = _ldapHelper.GetGroupAttribute(domainGroup, _settings.GroupAttribute); if (members == null) { continue; } foreach (var member in members) { var ldapUser = FindUserByMember(member); if (ldapUser == null) { continue; } if (!userAttributeValue.Equals(member, StringComparison.InvariantCultureIgnoreCase)) { continue; } var groupInfo = CoreContext.UserManager.GetGroupInfoBySid(sid); if (!Equals(groupInfo, Core.Users.Constants.LostGroupInfo)) { CoreContext.UserManager.AddUserIntoGroup(user.ID, groupInfo.ID); } } } var primaryGroup = AllDomainGroups.FirstOrDefault(g => g.Sid.EndsWith("-513")); if (primaryGroup == null) { return; } var getPrimaryGroup = CoreContext.UserManager.GetGroupInfoBySid(primaryGroup.Sid); if (!Equals(getPrimaryGroup, Core.Users.Constants.LostGroupInfo)) { CoreContext.UserManager.AddUserIntoGroup(user.ID, getPrimaryGroup.ID); } }