我需要能够获取用户所在组的列表,但我需要以下一个/一些/所有属性可见:

  • 专有名称
  • 姓名
  • 中文
  • samac 帐户名称

我现在所拥有的返回某种名称,但不是上面的任何名称(名称看起来很接近,但并非全部匹配正确。这就是我正在使用的:

ArrayList groups = new ArrayList();
foreach (System.Security.Principal.IdentityReference group in System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups)
    groups.Add(group.Translate(typeof(System.Security.Principal.NTAccount)));

就像我说的,上面的方法有效,但不会得到我的程序所需的正确名称(上面指定的名称)。我需要这个能够与我在呼叫我的域中的所有组时获得的列表相匹配:

DirectoryEntry dirEnt = new DirectoryEntry("LDAP://my_domain_controller");
DirectorySearcher srch = new DirectorySearcher(dirEnt);
srch.Filter = "(objectClass=Group)";
var results = srch.FindAll();
有帮助吗?

解决方案

您无法一步完成此操作,因为组也是具有属性的单独 AD 条目。

因此,在第一次运行中,您应该获取用户所在的组名称并将其填充到某种列表中。

第二步是遍历所有组名称并一一查询它们以获取组属性(如专有名称等)并将其收集到某种结构中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top