Почему при аутентификации по LDAP с DirectoryEntry периодически возникает исключение COMException (0x8007203A): «Сервер не работает»?

If anybody has a similar story, please post details below!

Я создаю веб-сайт ASP.NET, который должен поддерживать аутентификацию на основе LDAP.

В Windows аутентификация LDAP может выполняться через Active Directory (я не эксперт, но AD, кажется, просто особый вариант ldap). Я не управляю серверами AD и / или LDAP.

Я пробовал различные способы аутентификации, но я остановился на использовании одногоDirectoryEntry за попытку аутентификации:

using (DirectoryEntry de = new DirectoryEntry(ldapPath, ldapUsername, password, AuthenticationTypes.ServerBind)) {
    try {
        // Bind to the native AdsObject to force authentication.
        object obj = de.NativeObject;//not IDisposable
    } catch(...

Извлечение NativeObject вызываетCOMException если что-то пойдет не так, например, если проверка подлинности не удалась, исключение будет выглядеть как «Ошибка входа в систему: неизвестное имя пользователя или неверный пароль», а если сервер ldap недоступен или истекло время ожидания, что-то вроде «Сервер не эксплуатационное & Quot.

Это работает, в основном, но через переменное количество дней, всегда начинающееся с самого утра, мы получаем «Сервер не работает». пока IIS не будет перезапущен. Очевидно, что это не очень хорошее долгосрочное решение, но, насколько я могу судить, ошибка лежит в Com-объекте, лежащем в основе DirectoryEntry, - не то, что легко исправить.

это проблема ISN & APOS; т новый или же неизвестный, Некоторые люди прошли через поддержку Microsoft со смешанными результатами; в основном ответы, похоже, сводятся к тому, чтобы «выбрать путь ldap и создать несколько эквивалентных альтернатив, и, возможно, один из них сработает». Каждый раз, когда вы пытаетесь или, конечно, вы в течение нескольких дней не будете знать, действительно ли это сработало, и пока не будет найдено реальное решение, мы «возвращаемся к» перезагрузке серверов Windows каждую ночь ».

Для начала я попробовал пути ldap в формате

* "LDAP://server.uri:636"
* "LDAP://insecure.server.uri:389"
* "LDAP://server.uri:636/cn=username,ou=staff,o=myOrganisation,c=org"

Всегда с именем пользователя по следующей схеме:

* "cn=username,ou=staff,o=myOrganisation,c=org"

Все эти методы работают изначально, но терпят неудачу через переменное количество дней (и начинают работать после сброса IIS). Сервер работает под управлением IIS6 на win 2k3.

Если у кого-то еще есть такие проблемы, пожалуйста, напишите ниже, и, возможно, в конечном итоге мы найдем шаблон для работы или у нас будет достаточное количество примеров, чтобы убедить Microsoft исправить это.

Ответы на вопрос(3)

Ваш ответ на вопрос