private static string GetLdapAccessableEmail(string email) { try { if (string.IsNullOrEmpty(email)) { return(null); } var login = LdapLogin.ParseLogin(email); if (string.IsNullOrEmpty(login.Domain)) { return(email); } var dotIndex = login.Domain.LastIndexOf(".", StringComparison.Ordinal); var accessableEmail = dotIndex > -1 ? string.Format("{0}@{1}", login.Username, login.Domain.Remove(dotIndex)) : email; return(accessableEmail); } catch (Exception) { return(null); } }
public static bool IsLoginAccepted(LdapLogin ldapLogin, UserInfo ldapUser, string ldapDomain) { if (ldapLogin == null || string.IsNullOrEmpty(ldapLogin.ToString()) || string.IsNullOrEmpty(ldapDomain) || ldapUser == null || ldapUser.Equals(Constants.LostUser) || string.IsNullOrEmpty(ldapUser.Email) || string.IsNullOrEmpty(ldapUser.UserName)) { return(false); } var hasDomain = !string.IsNullOrEmpty(ldapLogin.Domain); if (!hasDomain) { return(ldapLogin.Username.Equals(ldapUser.UserName, StringComparison.InvariantCultureIgnoreCase)); } var fullLogin = ldapLogin.ToString(); if (fullLogin.Equals(ldapUser.Email, StringComparison.InvariantCultureIgnoreCase)) { return(true); } if (!ldapDomain.StartsWith(ldapLogin.Domain)) { return(false); } var alterEmail = ldapUser.UserName.Contains("@") ? ldapUser.UserName : string.Format("{0}@{1}", ldapUser.UserName, ldapDomain); return(IsLoginAndEmailSuitable(fullLogin, alterEmail)); }
public List <Tuple <UserInfo, LdapObject> > FindLdapUsers(string login) { var listResults = new List <Tuple <UserInfo, LdapObject> >(); var ldapLogin = LdapLogin.ParseLogin(login); if (ldapLogin == null) { return(listResults); } if (!LdapHelper.IsConnected) { LdapHelper.Connect(); } var exps = new List <Expression> { Expression.Equal(Settings.LoginAttribute, ldapLogin.Username) }; if (!ldapLogin.Username.Equals(login) && ldapLogin.ToString().Equals(login)) { exps.Add(Expression.Equal(Settings.LoginAttribute, login)); } string email = null; if (!string.IsNullOrEmpty(Settings.MailAttribute) && !string.IsNullOrEmpty(ldapLogin.Domain) && login.Contains("@")) { email = ldapLogin.ToString(); exps.Add(Expression.Equal(Settings.MailAttribute, email)); } var searchTerm = exps.Count > 1 ? Criteria.Any(exps.ToArray()).ToString() : exps.First().ToString(); var users = LdapHelper.GetUsers(searchTerm, !string.IsNullOrEmpty(email) ? -1 : 1) .Where(user => user != null) .ToLookup(lu => { var ui = Constants.LostUser; try { if (string.IsNullOrEmpty(_ldapDomain)) { _ldapDomain = LdapUtils.DistinguishedNameToDomain(lu.DistinguishedName); } ui = lu.ToUserInfo(this, _log); } catch (Exception ex) { _log.ErrorFormat("FindLdapUser->ToUserInfo() failed. Error: {0}", ex.ToString()); } return(Tuple.Create(ui, lu)); }); if (!users.Any()) { return(listResults); } foreach (var user in users) { var ui = user.Key.Item1; if (ui.Equals(Constants.LostUser)) { continue; } var ul = user.Key.Item2; var ldapLoginAttribute = ul.GetValue(Settings.LoginAttribute) as string; if (string.IsNullOrEmpty(ldapLoginAttribute)) { _log.WarnFormat("LDAP: DN: '{0}' Login Attribute '{1}' is empty", ul.DistinguishedName, Settings.LoginAttribute); continue; } if (ldapLoginAttribute.Equals(login)) { listResults.Add(user.Key); continue; } if (!string.IsNullOrEmpty(email)) { if (ui.Email.Equals(email, StringComparison.InvariantCultureIgnoreCase)) { listResults.Add(user.Key); continue; } } if (LdapUtils.IsLoginAccepted(ldapLogin, ui, LDAPDomain)) { listResults.Add(user.Key); } } return(listResults); }
public void CheckLdapLoginByBaseUsernameTest() { var ldapLogin = LdapLogin.ParseLogin(BASE_USERNAME); Assert.AreEqual(true, LdapUtils.IsLoginAccepted(ldapLogin, BaseUserInfo, BASE_LDAP_DOMAIN)); }
public void CheckIncorrectLdapLoginByEmailWithBaseDomainTest() { var ldapLogin = new LdapLogin("Ivan.Ivanov", BASE_LDAP_DOMAIN); Assert.AreEqual(false, LdapUtils.IsLoginAccepted(ldapLogin, BaseUserInfo, BASE_LDAP_DOMAIN)); }
public void CheckIncorrectLdapLoginByEmailTest() { var ldapLogin = LdapLogin.ParseLogin("*****@*****.**"); Assert.AreEqual(false, LdapUtils.IsLoginAccepted(ldapLogin, BaseUserInfo, BASE_LDAP_DOMAIN)); }
public void CheckLdapLoginByBaseForm4Test() { var ldapLogin = LdapLogin.ParseLogin(BASE_LDAP_LOGIN_FORM4); Assert.AreEqual(true, LdapUtils.IsLoginAccepted(ldapLogin, BaseUserInfo, BASE_LDAP_DOMAIN)); }
public void CheckLdapLoginByBaseUsernameAndBaseDominTest() { var ldapLogin = new LdapLogin(BASE_USERNAME, BASE_LDAP_DOMAIN); Assert.AreEqual(true, LdapUtils.IsLoginAccepted(ldapLogin, BaseUserInfo, BASE_LDAP_DOMAIN)); }