我找到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
答案 0 :(得分:1)
这10个小组是否有可能成为其他小组的成员?根据{{3}}:
UserPrincipal.GetAuthorizationGroups方法
此方法以递归方式搜索所有组,并返回用户所在的组 会员。返回的集合还可能包含其他组 系统会将用户视为授权用户。