public static bool TryLdapAuth(string login, string password) { if (!SetupInfo.IsVisibleSettings(ManagementType.LdapSettings.ToString())) { return(false); } var settings = SettingsManager.Instance.LoadSettings <LDAPSupportSettings>(TenantProvider.CurrentTenantID); if (!settings.EnableLdapAuthentication) { return(false); } try { var importer = new LDAPUserImporter(); try { ADDomain.CheckCredentials(login, password, settings.Server, settings.PortNumber); } catch (Exception) { return(false); } var sid = importer.GetSidOfCurrentUser(login, settings); if (sid == null) { return(false); } importer.GetDiscoveredGroupsByAttributes(settings); var userInfo = CoreContext.UserManager.GetUserBySid("l" + sid); if (userInfo == ASC.Core.Users.Constants.LostUser) { userInfo = CoreContext.UserManager.GetUserBySid(sid); if (userInfo == ASC.Core.Users.Constants.LostUser) { userInfo = importer.GetDiscoveredUser(settings, sid); if (userInfo == ASC.Core.Users.Constants.LostUser) { return(false); } try { SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem); if (TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers) { userInfo = UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), true, false); } else { userInfo = UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), true, false, true); } importer.AddUserIntoGroups(userInfo, settings); importer.AddUserInCacheGroups(userInfo); } finally { SecurityContext.Logout(); } } } else { if (importer.GetDiscoveredUser(settings, sid) == ASC.Core.Users.Constants.LostUser) { return(false); } userInfo.Sid = sid; try { SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem); if (TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers) { userInfo = UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), true, false); } else { userInfo = UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), true, false, true); } } finally { SecurityContext.Logout(); } } var cookiesKey = SecurityContext.AuthenticateMe(userInfo.ID); CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey); return(true); } catch (Exception e) { ADDomain.LogError(e.Message); return(false); } }