Как получить группы пользователей AD для user in Asp.Net?

StackOverflow https://stackoverflow.com/questions/90572

  •  01-07-2019
  •  | 
  •  

Вопрос

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

  • различимое имя
  • Имя
  • cn
  • имя пользователя 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();
Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top