我正在制作一个应用程序的用户管理模块,该模块基本上将根据用户的域登录详细信息对用户凭据进行身份验证。身份验证不是问题,问题是我需要获得该特定用户的经理。
我正在使用以下方法来检索用户的“经理”属性:
DirectoryEntry de = new DirectoryEntry(path, user, pass, AuthenticationTypes.Secure);
DirectorySearcher ds = new DirectorySearcher();
ds.SearchRoot = new DirectoryEntry("LDAP://xyzDomain", "UserName", "pwd");
ds.Filter = "(|(&(objectCategory=person)(objectClass=user)(mailnickname=*domainalias*)))";
//ds.PropertyNamesOnly = true;
ds.PropertiesToLoad.Add("manager");
List<string> users = new List<string>();
string s = "undefined";
foreach (SearchResult sr in ds.FindAll())
{
DirectoryEntry dee = sr.GetDirectoryEntry();
s = (string)dee.Properties[""].Value ?? "<undefined>";
users.Add(s);
}
这会以这样的方式返回经理详细信息:
CN=First LastName,OU=Managers,OU=Engineering,OU=Central,OU=Something,DC=XYZ,DC=XYZ,DC=XYZRE
我所做的是使用字符串操作来提取 CN,然后在该 CN 上运行查询以查找管理器的详细信息。然而问题是这里的 CN 并不是唯一的。可能有两个或更多同名的人。我基本上需要的是一种方法,可以返回用户的 Manager ALIAS(不是 CN 或任何东西)。
请任何帮助,这将不胜感激。接受建议。非常感谢