Коды ошибок привязки LDAP с использованием ADSI в C # - PullRequest
0 голосов
/ 05 мая 2010

Я привязываюсь к экземпляру ADAM от клиента C # с помощью поставщика ADSI. Когда связывание не удается, я получаю общее состояние ошибки, которое указывает на ошибку. Если я посмотрю на сетевую трассировку трафика, то увижу, что сам экземпляр ADAM отправляет расширенную информацию об ошибках моему клиенту, указывая причину сбоя аутентификации, но кажется, что поставщик ADSI отбрасывает эту расширенную информацию и просто сообщает мне что связь не удалась.

Например, при неудачной привязке выдается исключение COMException с атрибутом ErrorCode, который всегда будет содержать значение 8007052E. Если я посмотрю на трассировку сети, то существует несколько причин сбоя при отправке LDAP, и это могут быть ошибки истечения срока действия пароля, отключение учетной записи, неверный пароль, пользователь не существует и т. Д.

Есть ли способ получить эту расширенную информацию об ошибке, используя ADSI или объект COMException? Если нет, есть ли другой поставщик .NET, который кто-то использовал, который может получить эту информацию?

1 Ответ

0 голосов
/ 17 мая 2010

Поскольку у меня не было никаких ответов, я сам отвечу на это с помощью обходного пути.

Вместо того чтобы пытаться полагаться на конкретные коды возврата и данные возврата для вызовов LDAP, я настроил служебную учетную запись, которая может провести дополнительное исследование учетной записи в случае сбоя привязки. Например, если не удается выполнить привязку user1, я связываюсь с учетной записью службы, запрашиваю учетную запись user1 и считываю атрибуты учетной записи, чтобы дополнительно определить причину сбоя привязки, а затем возвращаю эту информацию конечному пользователю.

...