获取 Active Directory 组中的所有用户

Dar*_*o Z 0 .net c# .net-4.0 c#-4.0 asp.net-mvc-3

我正在尝试获取属于 Active Directory 中某个组的所有用户。我想将结果显示为下拉菜单,供网站用户选择。这是我到目前为止所拥有的:

public IEnumerable<KeyValuePair<string, string>> GetAllMembers(string group)
{
    var domainContext = new PrincipalContext(ContextType.Domain);
    var group = GroupPrincipal.FindByIdentity(domainContext, group);

    return from principal in @group.Members select new KeyValuePair<string, string>(/* need to fill in key and value */);
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我正在活动目录之外开发它,所以还不能真正测试它(长话短说,不要问)。当将其部署到测试环境中时,我希望最大限度地提高成功的机会。

我的问题是:如果我希望键值对包含登录用户名(key,ex:)"DOMAIN\darkoz"和用户真实姓名(value,ex:)"Darko Z",我如何获得这些?该Principal对象至少有 5 个属性,Name其中包含该单词,所以我不确定哪个是哪个。

额外问题:这是实现我的目标的普遍接受的方式吗?我意识到这是一个非常简单的问题,但由于我缺乏对 Active Directory 的了解,如果有更好的方法来做到这一点,我不会感到惊讶。这可以在非管理员帐户上运行吗?

Dar*_*o Z 5

解决方案正如我所怀疑的:

public IEnumerable<KeyValuePair<string, string>> GetAllMembers(string group)
{
    var domainContext = new PrincipalContext(ContextType.Domain);
    var groupPrincipal = GroupPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, group);

    return from m
           in groupPrincipal.Members 
           select new KeyValuePair<string, string>(m.SamAccountName, m.Name);
}
Run Code Online (Sandbox Code Playgroud)

其中SamAccountName给出用户登录名,Name是实际名称