Ошибка "Сервер не работает" при использовании классов UserPrincipal и PrincipalCotext

Я видел много ответов на эту проблему, но ни один из них не подходит мне. Я очень борюсь с аутентификацией AD. Ситуация выглядит так.

Мы выделили три контроллера домена. Мы хотим подключить правильный, чтобы мы не получили это исключение. Ситуация такова: на моей локальной машине я не сталкиваюсь с какими-либо проблемами, но при развертывании в IIS на сервере каждый раз, когда я аутентифицируюсь через AD, я получаю эту ошибку. Вот код, который я использую. Это после нескольких моих проверок исправлений и информации от Google и stackru:

public PrincipalContext GetPrincipalContext(string domainName, string userName, string password)
    {
        try
        {
            this.logger.Info("Connecting to LDAP");
            var domainContext = new DirectoryContext(DirectoryContextType.Domain,userName, password);

            var domain = Domain.GetDomain(domainContext);

            var controller = domain.FindDomainController();

            this.logger.Info("IP Address: {0}", controller.IPAddress);
            this.logger.Info("Domain: {0}", controller.Domain.Name);
            this.logger.Info("Controller name: {0}", controller.Name);
            this.logger.Info("Site name: {0}", controller.SiteName);
            this.logger.Info("Schema name: {0}", controller.Forest.Schema.Name);

            var context = new PrincipalContext(ContextType.Domain, "makler.local", "DC=makler,DC=local");

            this.logger.Info("context.ConnectedServer {0}", context.ConnectedServer);
            this.logger.Info("context.Container {0}", context.Container);
            this.logger.Info("context.ContextType {0}", context.ContextType);
            this.logger.Info(" context.Options {0}", context.Options);
            this.logger.Info("context.UserName {0}", context.UserName);

            return context;
        }
        catch (Exception ex)
        {
            this.logger.Info("Could not connecto to LDAP: {0}", ex.Message);
            throw new ApplicationException(string.Format("Could not connecto to LDAP: {0}", ex.Message));
        }
    }

Вот где я получаю UserPrincipal, чтобы у меня была некоторая информация о группах и тому подобное:

public UserPrincipal GetUserPrincipal(PrincipalContext principalContext, string userName)
    {
        try
        {
            this.logger.Info("Getting user principal, connected server {0}", principalContext.ConnectedServer);
            return UserPrincipal.FindByIdentity(principalContext, userName);

        }
        catch (Exception ex)
        {
            this.logger.Info("GetUserPrincipal exception {0}", ex.Message);
            throw new ApplicationException(string.Format("GetUserPrincipal exception {0}", ex.Message));
        }
    }

Когда я просматриваю пути журналов, кажется, что эта проблема исходит не от PrincipalContext, а от UserPrincipal. Есть много вещей, которые я не знаю об AD, но вот что я попробовал:

  1. Передача в качестве параметра IP-адреса
  2. Передача доменного имени, как вы видите в коде
  3. Я также попытался передать IP-адрес контроллера домена, который я на самом деле получаю из переменной контроллера.

Казалось, ничего не работает. Как я уже говорил, у нас есть три домена альфа. бета, гамма скажем. Независимо от того, что я пытаюсь, я всегда получаю исключение, что он пытается соединиться с Alfa. Есть идеи? Извините за длинный вопрос, но я старался быть как можно более конкретным. Я также могу сказать вам, что проблема исчезает, когда администраторы добавляют этот альфа-контроллер в брандмауэр, но это не очень хорошо. Мы зависим от того факта, что этот контроллер всегда будет жить, но что делать, когда он умрет? Я хотел бы, чтобы мое приложение, скажем, пуленепробиваемое в тот момент:)

пс. Я не хотел бы использовать подход DirectoryEntry, потому что он болезненный, так как я должен знать все вопросы запроса и т. Д. Если это будет единственный способ, то я был бы признателен за простое руководство по этому поводу, возможно, объясняя это шаг за шагом.

0 ответов

Другие вопросы по тегам