2013-05-13 2 views
0

Я создаю модуль управления пользователями приложения, которое будет в основном аутентифицировать учетные данные пользователя на основе данных регистрации в домене. Аутентификация - это не проблема, проблема в том, что мне нужно получить этого конкретного пользователя.Доступ к Active Directory для получения диспетчера пользователя в asp.net

Я использую следующий метод, чтобы получить свойство «Менеджер» пользователя:

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 или что-то еще).

Пожалуйста, помогите нам в этом, было бы весьма полезно. Открыта для предложений. Большое спасибо

ответ

0

Существует поле под названием mailNickname.

Эта ссылка: In active directory, what is mailNickname used for? - больше информации об этом. Проблема в том, что он используется для Exchange-сервера.

Значит, это значение может быть пустым или пустым. Вот пример в Visual Basic: http://www.vbforums.com/showthread.php?615131-RESOLVED-Get-logged-in-user-s-Alias-from-LDAP, который объясняет, как и что.