public void Dispose()
 {
     LdapImporter.Dispose();
 }
Пример #2
0
        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);
        }