Я пытаюсь найти данные пользователя в активном каталоге, используя зарегистрированный номер телефона. Я сформировал поисковый фильтр, но не возвращает пользователя, вместо этого всегда возвращает ноль. Где я ошибаюсь? Можно ли это сделать с помощью принципала пользователя? Помоги мне.
Код, который я пробовал до сих пор:
DirectoryEntry _entry = new DirectoryEntry("LDAP://Address",ConfigurationManager.AppSettings["ADDomainUserName"], ConfigurationManager.AppSettings["ADDomainPassword"]);
DirectorySearcher _searcher = new DirectorySearcher(_entry);
_searcher.Filter = String.Format("(&(objectClass=group)(objectCategory =person)(telephoneNumber = " + phoneNumber + "))");
SearchResult item = _searcher.FindOne();
var tn = item.Properties["telephonenumber"][0].ToString();





Исходя из вашего требования, я думаю, что ваш поисковый фильтр должен быть примерно таким:
"(&(objectCategory=person)(objectClass=user)(telephoneNumber = " + phoneNumber + "))"
Кроме того, вы должны очень четко понимать формат phoneNumber, который вы будете передавать в фильтр, поскольку он должен совпадать при поиске.
Надеюсь, поможет.
Проблема, с которой я столкнулся, заключается в том, что String.Format() после удаления и использования вышеуказанного формата все работает нормально! Спасибо @akg179.
Просто для ясности: проблема в исходном запросе заключается в
(objectClass=group), который находит группы, а не пользователей.