gpt4 book ai didi

c# - 如何在不嵌套的情况下从 AD 中获取用户所在的组

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:35 30 4
gpt4 key购买 nike

我想获得一个用户是直接成员(即没有嵌套)的组的列表。实际上,要检索您在 AD 的 Member Of 选项卡中看到的内容:

enter image description here

我正在使用以下方法获取组列表:

public List<GroupPrincipal> GetGroups(string userName)
{
List<GroupPrincipal> result = new List<GroupPrincipal>();
PrincipalContext myDomain = new PrincipalContext(ContextType.Domain, "mydomain.com");
UserPrincipal user = UserPrincipal.FindByIdentity(myDomain, userName);
if (user != null)
{
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
try
{
// iterate over all groups
foreach (Principal p in groups)
{
// make sure to add only group principals
if (p is GroupPrincipal)
{
result.Add((GroupPrincipal)p);
}
}
}
catch (Exception e)
{

}
}
return result;
}

但是,这会检索所有组,包括嵌套组。 (即,如果上面屏幕截图中的列表中有一个组嵌套在另一个组中 - 两个组都会返回)。

我怎样才能只检索 Active Directory 中显示的列表?

最佳答案

GetAuthorizationGroups() 将递归地获取所有安全组 + 其他组,例如在登录时评估的主要组或动态主体。

使用GetGroups()相反:

This method returns only the groups of which the principal is directly a member; no recursive searches are performed. Recursive search results are available for user principal objects. For more information, see the GetAuthorizationGroups method.

关于c# - 如何在不嵌套的情况下从 AD 中获取用户所在的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37789907/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com