ActiveDirectory DirectorySearcher: проверьте, является ли пользователь членом группы - PullRequest
4 голосов
/ 11 марта 2010

Я хочу знать, является ли данный пользователь членом группы или нет. Сейчас я мало что знаю о ActiveDirecory или серверах Exchange, но в Outlook я вижу, что пользователь может быть «memberOf» группой (и я могу запрашивать эти группы с DirectorySearcher.PropertiesToLoad.Add("memberof");), но есть и другие группы, пользователи не являются активными членами , но содержат пользователей. Если вы отправляете почту этим группам (или псевдонимам), вы получаете доступ ко всем содержащимся в нем пользователям.

Обычно, учитывая имя пользователя (например, DOMAIN\JDoe), как проверить, содержится ли оно в группе FUNNY_USERS в C #?

Ответы [ 3 ]

12 голосов
/ 11 марта 2010

Используйте пространство имен System.DirectoryServices.AccountManagement , добавленное в .Net 3.5, если оно доступно. Вот пример для групповой проверки:

using(var pc = new PrincipalContext(ContextType.Domain))
using(var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, "DOMAIN\JDoe"))
using(var group = GroupPrincipal.FindByIdentity(pc, "FUNNY_USERS"))
{
    return user.IsMemberOf(group);
 }
1 голос
/ 31 января 2013

Пользователи, которых вы видите в Outlook - это, вероятно, группы рассылки. В Active Directory есть группы рассылки и группы безопасности. Похоже, вы хотите проверить / или.

См. Мой пост на этот похожий вопрос для примера на C # с использованием только вызовов ldap

1 голос
/ 11 марта 2010

Получить всех участников в группе:

http://snipplr.com/view/4646/get-members-of-an-active-directory-distribution-group/

Как только у вас есть список, просто выполните один раз циклический просмотр имен пользователей.

Или:

Функция для возврата всех групп, членом которых является пользователь

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