Поиск в Active Directory - фильтр по менеджеру - PullRequest
1 голос
/ 28 января 2011

Я пытаюсь получить список пользователей из Active Directory, у которых есть указанный менеджер.Я безуспешно использовал следующий фильтр LDAP:

(manager=CN=Misterboss_n*)

Однако он не возвращает результата.У пользователей есть следующее значение в атрибуте менеджера:

"CN=Misterboss_n,OU=xyz user,DC=xyz,DC=local"

Что я делаю не так?Если я заменим вышеупомянутый фильтр чем-то вроде этого:

(givenName=John*)

, он будет работать нормально (возвращает всех пользователей, чье имя Джон).

Более широкий контекст:

public List<ADUserDetail> GetAllEmployeesUnderMisterboss()
        {
            List<ADUserDetail> userlist = new List<ADUserDetail>();
            string filter = "";
            _directoryEntry = null;
            DirectorySearcher directorySearch = new DirectorySearcher(SearchRoot);
            directorySearch.Asynchronous = true;
            directorySearch.CacheResults = true;
            filter = "(manager=CN=Misterboss_n*)";
            directorySearch.Filter = filter;
            SearchResultCollection userCollection = directorySearch.FindAll();
            foreach (SearchResult users in userCollection)
            {
                DirectoryEntry userEntry = new DirectoryEntry(users.Path, LDAPUser, LDAPPassword);
                ADUserDetail userInfo = ADUserDetail.GetUser(userEntry);
                userlist.Add(userInfo);
            }
            return userlist;
        }

Спасибо за помощь!

1 Ответ

2 голосов
/ 28 января 2011

Я не думаю, что есть поиск начала поля, доступный для DN-типизированных свойств.Вам придется использовать полный DN менеджера.Если вы не знаете полного DN, сначала найдите объект LDAP менеджера и используйте его свойство distinguishedName.

Обязательно перед тем, как создавать фильтр, корректно экранируйте значение DN - некаждый символ, допустимый в DN, также допустим в выражении фильтра LDAP:

*   as  \2a
(   as  \28
)   as  \29
\   as  \5c
NUL as  \00
/   as  \2f

Примеры кода см. в этой связанной ветке, где я ответил на очень похожий вопрос: Получение всех прямых отчетовActive Directory

...