Как найти пользователя на сервере LDAP - PullRequest
3 голосов
/ 09 сентября 2010

При попытке найти пользователя на сервере LDAP я получаю следующую ошибку «Неизвестная ошибка (0x8000500c)»

Это код, который я использую:

PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "gandalf.intrafg");
UserPrincipal p = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, "Consultor1");

Кстати, следующий фрагмент кода, кажется, работает (исключение не генерируется), но samAccountName представляется в виде байтового массива.Кто-нибудь знает почему?

DirectoryEntry entry = new DirectoryEntry("LDAP://gandalf.intrafg");

DirectorySearcher searcher = new DirectorySearcher(entry);

//searcher.PropertiesToLoad.Add("givenName");
//searcher.PropertiesToLoad.Add("sn");
searcher.PropertiesToLoad.Add("samAccountName");

searcher.Filter = "(&(objectCategory=person)(samAccountName=Consultor1))";

SearchResult result = searcher.FindOne();

Ответы [ 2 ]

0 голосов
/ 09 сентября 2010

Код у вас должен быть в порядке - он работает для меня, никаких проблем вообще.

Однако: вы не говорите нам, что вы вводите для domain_name здесь:

PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "domain_name");

или userId здесь:

UserPrincipal p = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, UserId);

domain_name должен быть в "старом" стиле NetBIOS, например FABRIKAM - нет DNS-стиля, например fabrikam.com, AD-стиля, например dc=fabrikom,dc=com, и даже полного пути LDAP.

userId должно быть действительным именем учетной записи SAM, например, Максимум. только из 20 символов, букв и цифр (за исключением нескольких допустимых специальных символов).

Вы соответствуете этим требованиям ??

0 голосов
/ 09 сентября 2010

Ваш второй блок кода работает просто отлично, однако я не передал имя домена в инициализаторе DirectoryEntry.

    Directory entry = new DirectoryEntry();
//other code
result.Properties["samAccountName"][0].ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...