Как проверить, является ли пользователь членом списка рассылки / группы безопасности в AD C # - PullRequest
2 голосов
/ 26 июля 2011

Я использую приведенный ниже фрагмент кода, чтобы проверить, является ли данный пользователь частью группы рассылки в AD.

static bool IsUserMemberOf(string userName, string groupName)
{
  using (var ctx = new PrincipalContext(ContextType.Domain))
  using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName))
  using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, userName))
  {
    return userPrincipal.IsMemberOf(groupPrincipal);
  }
}

я вызываю вышеуказанный метод со значениями IsUserMemberOf("domain\\username","domain\\groupname") Но я вижу исключение нулевого указателя, потому что groupPrincipal имеет нулевое значение.

Любая помощь в этом отношении?

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Это просто означает, что:

groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName)) 

Возвращает нулевой указатель, потому что вашей группы нет в вашем домене. Вам просто нужно проверить свои var ctx, userPrincipal и groupPrincipal.

0 голосов
/ 17 января 2013

На самом деле моя группа находится в другом домене, чем пользователь, для которого я запрашиваю: Я внес изменения в свою программу ниже и теперь работаю.

и я звоню вот так:

IsUserMemberOf("domain1\\username","domain2\\groupname")


static bool IsUserMemberOf(string userName, string groupName)
{
 using (var ctx = new PrincipalContext(ContextType.Domain,"domain1"))
 using (var groupPrincipal = GroupPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain,"domain2"), groupName))
 using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, userName))
 {
    return userPrincipal.IsMemberOf(groupPrincipal);
 }

}

...