0

我正在制作一个应用程序的用户管理模块,该模块基本上将根据用户的域登录详细信息对用户凭据进行身份验证。身份验证不是问题,问题是我需要获得该特定用户的经理。

我正在使用以下方法来检索用户的“经理”属性:

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 或任何东西)。

请任何帮助,这将不胜感激。接受建议。非常感谢

4

1 回答 1

0

有一个名为mailNickname的字段。

此链接:在活动目录中,mailNickname 用于什么?有更多关于它的信息。问题是:它用于 Exchange 服务器。

这意味着该值可以为 null 或为空。这是 Visual Basic 中的一个示例:http ://www.vbforums.com/showthread.php?615131-RESOLVED-Get-logged-in-user-s-Alias-from -LDAP 解释了如何和什么。

于 2013-05-13T10:04:04.463 回答