public void Dispose() { LdapImporter.Dispose(); }
public override LdapSettingsStatus CheckSettings() { if (!Settings.EnableLdapAuthentication) { return(LdapSettingsStatus.Ok); } if (Settings.Server.Equals("LDAP://", StringComparison.InvariantCultureIgnoreCase)) { return(LdapSettingsStatus.WrongServerOrPort); } if (!LdapHelper.IsConnected) { try { LdapHelper.Connect(); } catch (NovellLdapTlsCertificateRequestedException ex) { log.ErrorFormat("CheckSettings(acceptCertificate={0}): NovellLdapTlsCertificateRequestedException: {1}", Settings.AcceptCertificate, ex); CertificateConfirmRequest = ex.CertificateConfirmRequest; return(LdapSettingsStatus.CertificateRequest); } catch (NotSupportedException ex) { log.ErrorFormat("CheckSettings(): NotSupportedException: {0}", ex); return(LdapSettingsStatus.TlsNotSupported); } catch (SocketException ex) { log.ErrorFormat("CheckSettings(): SocketException: {0}", ex); return(LdapSettingsStatus.ConnectError); } catch (ArgumentException ex) { log.ErrorFormat("CheckSettings(): ArgumentException: {0}", ex); return(LdapSettingsStatus.WrongServerOrPort); } catch (SecurityException ex) { log.ErrorFormat("CheckSettings(): SecurityException: {0}", ex); return(LdapSettingsStatus.StrongAuthRequired); } catch (SystemException ex) { log.ErrorFormat("CheckSettings(): SystemException: {0}", ex); return(LdapSettingsStatus.WrongServerOrPort); } catch (Exception ex) { log.ErrorFormat("CheckSettings(): Exception: {0}", ex); return(LdapSettingsStatus.CredentialsNotValid); } } if (!CheckUserDn(Settings.UserDN)) { return(LdapSettingsStatus.WrongUserDn); } if (Settings.GroupMembership) { if (!CheckGroupDn(Settings.GroupDN)) { return(LdapSettingsStatus.WrongGroupDn); } if (!LdapImporter.TryLoadLDAPGroups()) { if (!LdapImporter.AllSkipedDomainGroups.Any()) { return(LdapSettingsStatus.IncorrectGroupLDAPFilter); } if (LdapImporter.AllSkipedDomainGroups.All(kv => kv.Value == LdapSettingsStatus.WrongSidAttribute)) { return(LdapSettingsStatus.WrongSidAttribute); } if (LdapImporter.AllSkipedDomainGroups.All(kv => kv.Value == LdapSettingsStatus.WrongGroupAttribute)) { return(LdapSettingsStatus.WrongGroupAttribute); } if (LdapImporter.AllSkipedDomainGroups.All(kv => kv.Value == LdapSettingsStatus.WrongGroupNameAttribute)) { return(LdapSettingsStatus.WrongGroupNameAttribute); } } if (!LdapImporter.AllDomainGroups.Any()) { return(LdapSettingsStatus.GroupsNotFound); } } if (!LdapImporter.TryLoadLDAPUsers()) { if (!LdapImporter.AllSkipedDomainUsers.Any()) { return(LdapSettingsStatus.IncorrectLDAPFilter); } if (LdapImporter.AllSkipedDomainUsers.All(kv => kv.Value == LdapSettingsStatus.WrongSidAttribute)) { return(LdapSettingsStatus.WrongSidAttribute); } if (LdapImporter.AllSkipedDomainUsers.All(kv => kv.Value == LdapSettingsStatus.WrongLoginAttribute)) { return(LdapSettingsStatus.WrongLoginAttribute); } if (LdapImporter.AllSkipedDomainUsers.All(kv => kv.Value == LdapSettingsStatus.WrongUserAttribute)) { return(LdapSettingsStatus.WrongUserAttribute); } } if (!LdapImporter.AllDomainUsers.Any()) { return(LdapSettingsStatus.UsersNotFound); } return(string.IsNullOrEmpty(LdapImporter.LDAPDomain) ? LdapSettingsStatus.DomainNotFound : LdapSettingsStatus.Ok); }