У меня есть веб-приложение (.NET 3.5), которое отправляет уведомления по электронной почте пользователям. Для этого я ищу Active Directory, чтобы найти электронное письмо каждого человека.Как использовать зарегистрированные персональные данные для поиска в Active Directory?
На данный момент, я жестко прописывать свое собственное имя пользователя и пароль, как это для того, чтобы найти AD:
Dim entry As New DirectoryEntry("LDAP://companyad", "myUsername", "myPassword", AuthenticationTypes.Secure)
Dim srch As New DirectorySearcher(entry)
srch.Filter = [String].Format("(&(objectClass=person)(sAMAccountName={0}))", "someOtherUsername")
Dim result As SearchResult = srch.FindOne()
Теперь, очевидно, это не является идеальным, и я не хочу, чтобы эти полномочия жёстко. В моем веб-приложении используется проверка подлинности Windows. Он также использует олицетворение (как зарегистрированный пользователь) для доступа к файлам и SQL Server. Есть ли способ для меня «олицетворять» зарегистрированного пользователя для поиска AD?
EDIT 1
Я думал, что лучше объяснить, почему я выбрал этот ответ. Проблема оказалась не в проблемах с несколькими перелетами или в кеберосах, поскольку, кажется, я правильно их установил.
Я недавно изменил свое приложение, чтобы разрешить доступ только к определенной группе через настройки web.config. Раньше я только разрешал доступ к себе. Я создал группу и добавил к ней. Затем я удалил жестко установленные учетные данные и попытался запустить приложение БЕЗ ВОССТАНОВЛЕНИЯ моего компьютера.
В соответствии с моим сетевым администратором, я бы не вошел в систему под этой новой группой, пока не перезапустил компьютер, который, по моему мнению, является причиной моей проблемы. Итак, ответ Preet на самом деле самый точный, поскольку мне просто нужно было пройти путь LDAP к DirectoryEntry.
EDIT 2
Я также необходимо зарегистрировать имя участника службы.
Я побежал это:
setspn -A HTTP/[dns name of the site] [machine name]
на моей машине развития.
Спасибо всем остальным за их ответы.
К сожалению, нет. Я получаю это исключение: «Тип: System.Runtime.InteropServices.COMException, mscorlib, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 Сообщение: произошла ошибка операций." Полезно, да? – Andrew
Проверьте, что он говорит в журнале событий. –