2013-05-13 101 views
0

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

我使用下面的方法来获取用户的“经理”属性:

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并不是唯一的。可能有两个或更多同名的人。我基本需要的是一种方法,它将用户的管理器ALIAS(不是CN或任何东西)返回给我。

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

回答

相关问题