Поиск пользователя по идентификатору по точному совпадению в LDAP (подборщик SharePoint 2010) - PullRequest
1 голос
/ 01 сентября 2011

Я пытаюсь найти пользователя в LDAP и разрешить его имя в SharePoint PeoplePicker. Пользователь вводит идентификатор пользователя в PeoplePicker, а затем нажимает CheckName. Код вызывает SearchSingleUser () с введенным идентификатором пользователя.

Пример:Я набираю 'xyz' и нажимаю CheckName. Приведенный ниже метод будет искать LDAP пользователей с SamAccountName = 'xyz' для точного соответствия.Если совпадение найдено, он должен разрешить идентификатор в peoplepicker

Если в LDAP есть домен \ xyz, но пользователь вводит xyz, он не будет совпадать и не будет разрешен

Но то, что я вижув том, что имя разрешается наполовину.

Любая подсказка, что мне не хватает в поиске точного соответствия свойства?

Это мой код:

public static string _LDAPSearchDefSingleUser = "(&(objectClass=user)(SamAccountName={0}))";

public static SearchResultCollection SearchSingleUser(string searchPattern)
{
    using (DirectoryEntry root = new DirectoryEntry(ldapPath, username, password))
    {                
        root.AuthenticationType = AuthenticationTypes.None;
        string filter = string.Format(_LDAPSearchDefSingleUser, searchPattern);

        using (DirectorySearcher searcher = new DirectorySearcher(root))
        {                    
            searcher.ReferralChasing = ReferralChasingOption.All;
            searcher.SearchScope = SearchScope.Subtree;
            searcher.Filter = filter;
            searcher.PropertiesToLoad.Add("objectclass");
            searcher.PropertiesToLoad.Add("SamAccountName");
            SearchResultCollection results = searcher.FindAll();

            return results;
        }
    }
}

1 Ответ

2 голосов
/ 01 сентября 2011

Не уверен, что недооценил ваш вопрос, но я подтверждаю, что следующий фильтр:

(&(objectClass=user)(SamAccountName=xyz))

в поиске LDAP возвращает только объект класса user с атрибутом SamAccountName, точно равным 'xyz'.

В вашем случае, если у вас есть несколько совпадений, это потому, что вы вводите '* xyz' или '* xyz *'.

Для вашей информации я использую тот же код, и он работает так.

...