2013-10-04 27 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方法

該方法遞歸地搜索所有的組,並返回其中用戶是一個 所屬的組。返回的集合還可能包含其他組,爲了授權目的系統會將該用戶視爲其成員。