gpt4 book ai didi

c# - 检查嵌套 AD 组中的用户成员资格

转载 作者:行者123 更新时间:2023-11-30 13:37:32 24 4
gpt4 key购买 nike

我有一个 ASP.NET Framework 4.5 应用程序,它具有以下功能来检查用户是否是 AD 组的成员:

public static bool IsUserGroupMember(string userName, string groupName)
{
string domain = "ad.our.org";
string defaultOU = "OU=Our_Department,DC=ad,DC=our,DC=org";
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domain, defaultOU, ContextOptions.SimpleBind);
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, userName);
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(principalContext, groupName);

return oGroupPrincipal.Members.Contains(oUserPrincipal);
}

但是,这仅在用户直接是组的成员而不是嵌套在该组中的另一个组的成员时才有效。

希望得到帮助来修复此代码以通过组内的每个嵌套组递归检查成员资格。我查看了 StackOverflow 中类似问题的答案,但无法弄清楚如何最好地修改我的函数以使其正常工作。

谢谢。

最佳答案

这就是你想要的:

public static bool IsUserGroupMember(string userName, string groupName)
{
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, userName))
using (PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups())
{
return groups.OfType<GroupPrincipal>().Any(g => g.Name.Equals(groupName, StringComparison.OrdinalIgnoreCase));
}
}

关于c# - 检查嵌套 AD 组中的用户成员资格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22260665/

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