2013-10-04 2 views
1

Я нашел this сообщение, чтобы получить группы безопасности пользователя.GetAuthorizationGroups возвращает больше групп, чем мой пользователь, находится в

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

public List<GroupPrincipal> GetGroups(string userName, string userPassword, string userDomain) 
    { 
     List<GroupPrincipal> result = new List<GroupPrincipal>(); 

     // establish domain context 
     PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain, userDomain, userName, userPassword); 

     // find your user 
     UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, IdentityType.SamAccountName, userName); 

     // if found - grab its groups 
     if (user != null) 
     { 
      PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups(); 

      // iterate over all groups 
      foreach (Principal p in groups) 
      { 
       // make sure to add only group principals 
       if (p is GroupPrincipal) 
       { 
        result.Add((GroupPrincipal)p); 
       } 
      } 
     } 

     return result; 
    } 

К сожалению, я теперь получить каждую группу безопасности в AD, а не только те, которые пользователь находится в Мой пользователь находится в 10 но он возвращает 71. Я должен был указать имя пользователя и пароль, иначе мне не разрешат искать группы. Это учетная запись администратора в другом домене, поэтому я не мог использовать текущие учетные данные.

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Привет и спасибо заранее IG

ответ

1

Есть ли шанс, что 10 групп являются членами других групп? Согласно documentation:

UserPrincipal.GetAuthorizationGroups Метод

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

Смежные вопросы