Я пытался отобразить список ролей из Active Directory в C#, но единственные ответы, которые я нашел до сих пор, - это список ролей, привязанных к определенному пользователю, а не список всех ролей домена мудрый.Получить список ролей, домен с помощью Active Directory
Это фрагмент кода я нашел here
// set up domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// get the authorization groups - those are the "roles"
var groups = user.GetAuthorizationGroups();
foreach(Principal principal in groups)
{
// do something with the group (or role) in question
}
}
}
Как вы можете видеть, единственный способ, чтобы получить список ролей через использование UserPrincipal
объекта, который связан с пользователем. Я хотел бы указать все возможные роли, которые могут быть назначены пользователю из определенного домена.
Кстати, я не очень хорошо знаю Иерархию пользователей/групп/ролей в Active Directory, поэтому я мог ошибаться, когда думал о том, как работает эта структура, допустим, роль - это просто особый вид группы.
Спасибо, я протестировал его, и в нем перечислены те же группы, в которых я получал другой фрагмент. Кстати, нормально ли, если я устанавливаю qbeGroup.IsSecurityGroup = false, он возвращает пустой список? Я не знаю, нормально ли иметь «нормальные группы», и все они - группы безопасности. –
@IvanMolinaHuerta: если вы установили 'IsSecurityGroup = false', то вы получите ** ** только ** (Exchange) группы распределения в вашем AD. Если у вас нет Exchange, настроенного на этом сервере, у вас может не быть ни одного из них - это вполне возможно –