1

我发现这篇文章是为了获取用户的安全组。

我不得不对其进行一些更改,使其看起来像这样:

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

4

1 回答 1

1

这 10 个组是否有可能是其他组的成员?根据文档

UserPrincipal.GetAuthorizationGroups 方法

此方法递归搜索所有组并返回用户所属的组。返回的集合还可能包括系统出于授权目的而将用户视为成员的其他组。

于 2014-04-02T15:03:50.887 回答