我正在尝试在LDAP中搜索用户并在SharePoint PeoplePicker中解析他的名字 用户在PeoplePicker中键入用户的idsid,然后单击CheckName 该代码使用键入的用户标识调用SearchSingleUser()。
示例:我输入'xyz'并点击CheckName 然后,下面的方法将在LDAP中搜索具有SamAccountName ='xyz'的用户以进行完全匹配。如果找到匹配,那么它应解决peoplepicker中的idsid
如果LDAP具有Domain \ 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;
}
}
}
答案 0 :(得分:2)
不确定是否理解了您的问题,但我确认了以下过滤条件:
(&(objectClass=user)(SamAccountName=xyz))
LDAP搜索中的仅返回类user
的对象,其属性SamAccountName
完全等于'xyz'。
在你的情况下,如果你有多场比赛,那是因为你输入'* xyz'或'* xyz *'。
为了您的信息,我使用完全相同的代码,它就可以了。