2015-10-15 2 views
0

Создание метода с именем GetAdUsers, который должен возвращать набор сведений о каждом пользователе в Active Directory (включая идентификатор пользователя).Возврат списка идентификаторов пользователей из Active Directory

Я успешно возвращения пользователей Email, UserName и DisplayName, но не может получить пользователя Идентификаторы.

Как получить идентификаторы пользователя из Active Directory.

Моя модель пользователя

public class Users 
{ 
    public string Email { get; set; } 
    public string UserName { get; set; } 
    public string DisplayName { get; set; } 
    public bool IsMapped { get; set; } 
    public int UserId { get; set; } 
} 

Мой метод, чтобы получить каталог Info Активный

public List<Users> GetAdUsers() 
{ 
    try 
    { 
     List<Users> lstADUsers = new List<Users>(); 
     string DomainPath = ConfigurationManager.AppSettings["...ldapPathHere..."]; 

     // Encapsulating an object in Active Directory Domain Service - the DirectoryEntry is initializing a new instance of AD Domain Services 
     DirectoryEntry searchRoot = new DirectoryEntry(DomainPath); 

     // Searching for all users in the domain 
     DirectorySearcher search = new DirectorySearcher(searchRoot); 

     // Filtering my results 
     search.Filter = "(&(objectClass=user)(objectCategory=person))"; 
     search.PropertiesToLoad.Add("samaccountname"); 
     search.PropertiesToLoad.Add("mail"); 
     search.PropertiesToLoad.Add("usergroup"); 
     search.PropertiesToLoad.Add("displayname");//first name 
     search.PropertiesToLoad.Add("userid"); 

     SearchResult result; 
     SearchResultCollection resultCol = search.FindAll(); 

     if (resultCol != null) 
     { 
      for (int counter = 0; counter < resultCol.Count; counter++) 
      { 
       string UserNameEmailString = string.Empty; 
       result = resultCol[counter]; 
       if (result.Properties.Contains("samaccountname") && 
        result.Properties.Contains("mail") && 
        result.Properties.Contains("displayname") && 
        result.Properties.Contains("userid")) 
       { 
        Users objSurveyUsers = new Users(); 
        objSurveyUsers.Email = (String)result.Properties["mail"][0] + 
         "^" + (String)result.Properties["displayname"][0]; 
        objSurveyUsers.UserName = (String)result.Properties["samaccountname"][0]; 
        objSurveyUsers.DisplayName = (String)result.Properties["displayname"][0]; 
        objSurveyUsers.UserId = (int) result.Properties["userid"][0]; 
        lstADUsers.Add(objSurveyUsers); 
       } 
      } 
     } 
     return lstADUsers; 
    } 
    catch (Exception ex) 
    { 
     throw; 
    } 
} 
+0

В базовой схеме AD нет атрибута 'userId'. Что конкретно вы пытаетесь получить? –

ответ

0

Я думаю, что вы имеете в виду идентификатор безопасности или SID. Это сохраняется в атрибуте objectSID.

0

Вы имеете в виду samAccount или SamAccountName (я не уверен, какой из них является правильным)

Edit:

К сожалению, в следующий раз я должен прочитать код полностью - это не Чувствительность к регистру LDAP?

Смежные вопросы