Как получить AD User Groups для пользователя в Asp.Net? - PullRequest
3 голосов
/ 18 сентября 2008

Мне нужно иметь возможность получить список групп, в которых находится пользователь, но мне нужно иметь одно / некоторые / все следующие свойства видимыми:

  • DistinguishedName
  • имя
  • сп
  • SamAccountName

То, что у меня сейчас есть, возвращает какое-то имя, но не любое из вышеперечисленных (имена кажутся близкими, но не все соответствуют друг другу. Вот что я использую:

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();

1 Ответ

3 голосов
/ 18 сентября 2008

Вы не можете сделать это за один шаг, поскольку группы также являются отдельными записями AD со свойствами.

Итак, при первом запуске вы должны получить имена групп, в которых находится пользователь, и заполнить их списком какого-либо рода.

Второй шаг состоит в том, чтобы просмотреть все имена групп и запросить их один за другим, чтобы получить свойства группы (например, отличительное имя и т. Д.) И собрать их для некоторой структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...