2015-04-15 71 views
0

我需要遞歸搜索Active Directory組以查看用戶帳戶是否在給定組中;但是,用戶所屬的某些組未由GetAuthorizationGroups()方法返回。UserPrincipal.GetAuthorizationGroups()不檢索所有組

功能是:

public static bool IsUserAuthorized(string adGroup, string userName) 
{ 
    bool isInRole = false; 

    using (var ctx = new PrincipalContext(ContextType.Domain, "MyDomain")) 
    { 
     using (UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName)) 
     { 
      isInRole = user != null && user.GetAuthorizationGroups().Any(g => g.SamAccountName == adGroup); 
     } 
    } 

    return isInRole; 
} 

我調用該函數像這樣:

IsUserAuthorized("myGroup", "MyDomain\MyUser"); 

回答

0

這是不是與代碼的問題。 .GetAuthorizationGroups()方法不檢索使用組類型分配設置的組。我將Active Directory中的組類型從分發更改爲安全。而且,神奇的是,缺少的組是由.GetAuthorizationGroups()方法返回的。