GetAuthorizationGroups返回的组比我的用户多

时间:2013-10-04 10:20:48

标签: c# .net-4.0 userprincipal

我找到this帖子来获取用户的安全组。

我不得不改变它,所以它看起来像这样:

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 个答案:

答案 0 :(得分:1)

这10个小组是否有可能成为其他小组的成员?根据{{​​3}}:

  

UserPrincipal.GetAuthorizationGroups方法

     

此方法以递归方式搜索所有组,并返回用户所在的组   会员。返回的集合还可能包含其他组   系统会将用户视为授权用户。