UserPrincipal.GetAuthorizationGroups()不检索所有组

时间:2015-04-15 21:03:13

标签: .net active-directory

我需要递归搜索Active Directory组以查看用户帐户是否在给定组中;但是,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");

1 个答案:

答案 0 :(得分:0)

这不是代码的问题。 .GetAuthorizationGroups()方法不检索使用“组分发类型”设置的组。我将Active Directory中的组类型从分发更改为安全。而且,奇怪的是,缺少的组由.GetAuthorizationGroups()方法返回。