C# 从广告中获取用户角色的简单方法?

C# 从广告中获取用户角色的简单方法?,c#,.net,active-directory,ldap,C#,.net,Active Directory,Ldap,我正在编写一个独立的应用程序,该应用程序需要给定一个广告帐户名,以确定用户是否是某个特定组的成员。我正在用.NET C编写应用程序。AD中的结构如下所示: 组织 第一队 大卫用户 组 应用程序A 第一组,从上面开始 仅列出David的成员身份并不能表明他是应用程序a组的成员 我从Microsoft的文档中了解到,使用主体我可以简单地使用IsInRole调用,但我找不到任何不需要David登录到机器或运行执行检查的应用程序的情况。我认为我对安全模型的有限理解也在这里发挥作用 有人能给我指一下正确的

我正在编写一个独立的应用程序,该应用程序需要给定一个广告帐户名,以确定用户是否是某个特定组的成员。我正在用.NET C编写应用程序。AD中的结构如下所示:

组织 第一队 大卫用户 组 应用程序A 第一组,从上面开始 仅列出David的成员身份并不能表明他是应用程序a组的成员

我从Microsoft的文档中了解到,使用主体我可以简单地使用IsInRole调用,但我找不到任何不需要David登录到机器或运行执行检查的应用程序的情况。我认为我对安全模型的有限理解也在这里发挥作用

有人能给我指一下正确的方向吗?我要寻找的是关于如何在不依赖David运行任何应用程序的情况下用C解决上述引用、提示和代码段的提示


如果有什么可以澄清的,请告诉我。

您可以使用从目录中获取UserPrincipal对象。这与您可能找到的其他主体对象不完全相同,但它确实有一种方法允许您查询组成员身份。

您可以使用该方法从目录中获取UserPrincipal对象。这与您可能找到的其他主要对象不完全相同,但它确实有一种方法允许您查询组成员资格。

我在我的广告环境中使用它

var pc = new PrincipalContext(ContextType.Domain);
var group = GroupPrincipal.FindByIdentity(pc, "GROUPNAME");
var existsInGroup = group.GetMembers(true).Where(p => p.UserPrincipalName == "username@domain").Any();
如果不想检查子组,请将false传递给


它不要求给定的用户必须登录。希望有帮助。

我在我的广告环境中使用它

var pc = new PrincipalContext(ContextType.Domain);
var group = GroupPrincipal.FindByIdentity(pc, "GROUPNAME");
var existsInGroup = group.GetMembers(true).Where(p => p.UserPrincipalName == "username@domain").Any();
如果不想检查子组,请将false传递给


它不要求给定的用户必须登录。希望有帮助。

添加对DirectoryServices.AccountManagement的引用

然后添加一个using语句:

using System.DirectoryServices.AccountManagement;
然后在主过程中或其他需要的地方,调用过程IsMember:

string userName = "David";
string GroupName = "Team 1";
bool test = IsMember(userName, GroupName);

如果David在团队1中,该过程将返回true,否则返回false。

添加对DirectoryServices.AccountManagement的引用

然后添加一个using语句:

using System.DirectoryServices.AccountManagement;
然后在主过程中或其他需要的地方,调用过程IsMember:

string userName = "David";
string GroupName = "Team 1";
bool test = IsMember(userName, GroupName);

如果David在团队1中,该过程将返回true,否则返回false。

谢谢,GetAuthorizationGroups是键。谢谢,GetAuthorizationGroups是键。