2012-03-08 3 views
2

Я использую приложение C# для проверки подлинности и проверки пользователя Active Directory, который находится на 64-битном сервере Window 2008.Как проверить, существует ли пользователь LDAP/активен?

Я был в состоянии проверить подлинность пользователя успешно при поставке имя пользователя и пароль, используя следующий код: Моя ценность Домена является rootforest.com и моя имя_пользователя является admin6

 UserPrincipal usr; 
     PrincipalContext ad; 

     //Enter Active Directory settings 
     ad = new PrincipalContext(ContextType.Domain, domainName,usrName,pswd); 

     //search user 
     usr = new UserPrincipal(ad); 
     usr.SamAccountName = usrName; 

     PrincipalSearcher search = new PrincipalSearcher(usr); 
     usr = (UserPrincipal)search.FindOne(); 
     search.Dispose(); 

В другой функции, где я хочу проверьте, существует ли «admin6» пользователя, и у меня нет пароля, но когда я проверяю его, функция продолжает метать «Logon failire: unkoown user name или bad password. \ r \ n». Код, который я использовал, был почти идентичен описанному выше, за исключением этой линии:

 //Enter Active Directory settings 
     ad = new PrincipalContext(ContextType.Domain, domainName); 

Имея это не работает, я попробовал другой код, который я нашел в Интернете, но все они дают мне ту же ошибку. Я начал думать, что может быть, как я настроил свой домен Active Directory?

На рисунке ниже, как мой домен выглядит:

https://picasaweb.google.com/100922945973553878191/ActiveDirectory?authuser=0&feat=directlink

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

ответ

1

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

Это отличается от установления состояния аутентификации соединения, которое выполняется с запросом привязки. Если запрос привязки выполнен успешно, то состояние аутентификации соединения устанавливается в соответствии с выдающимся именем, используемым в привязке.

Возможно, вам стоит проверить статус выдающегося имени с помощью командной строки ldapsearch. Это позволит вам быть уверенным, что различающееся имя существует, а также, если учетные данные верны, а также то, что разрешения на каталоги позволяют выполнить то, что вы пытаетесь выполнить. После того как вы убедились в существовании отличительного имени и учетных данных, вы можете приступить к устранению неполадок вашего кода.

+0

Я нахожусь на оконной машине, поэтому я загрузил инструмент администрирования LDAPSoft AD, чтобы проверить мое соединение, и я мог видеть, что мое имя выдающегося имени для учетной записи «admin6» - CN = admin6, CN = Пользователи, DC = rootforest, DC = com. Я попытался использовать это в своем коде, например if (DirectoryEntry.Exists («LDAP: // CN = admin6, CN = Пользователи, DC = rootforest, DC = com)) или if (DirectoryEntry.Exists (« LDAP: // DC = rootforest, DC = com)), но все равно не повезло – Fylix

Смежные вопросы