我正在製作一個應用程序的用戶管理模塊,該模塊基本上根據用戶的域登錄詳細信息對用戶憑證進行身份驗證。身份驗證不是問題,問題是我需要獲取特定用戶的經理。在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或任何東西)返回給我。
請任何幫助,這將不勝感激。接受建議。 非常感謝