从活动目录返回用户 ID 列表

本文关键字:用户 ID 列表 返回 活动 | 更新日期: 2023-09-27 18:17:48

创建一个名为 GetAdUsers 的方法,该方法应返回有关 Active Directory 中每个用户的一组信息(包括用户 ID(。

我已成功返回用户EmailUserNameDisplayName,但无法获取用户的 ID

如何从活动目录获取用户 ID。

我的用户模型

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; }
}

我获取活动目录信息的方法

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;
    }
}

从活动目录返回用户 ID 列表

我想你的意思是安全标识符或SID。这保存在objectSID属性中。

你的意思是 samAccount 還是 samAccountName ?(我不确定哪一个是正确的(

编辑:

抱歉,下次我应该完整阅读代码 - LDAP 查询不区分大小写吗?