我正在编写一个独立的应用程序,需要在给定 AD 帐户名的情况下确定用户是否是特定组的成员。我正在用 .NET (C#) 编写应用程序。 AD中的结构如下所示:
- 组织
- 第 1 队
- David (用户)
- 第 1 队
- 群组
- 应用A
- 团队 1(上面的小组)
- 应用A
仅列出 David 的成员身份并不能表明他是应用程序 A 组的成员。
我从 Microsoft 的文档中了解到(使用主体)我可以简单地使用 IsInRole 调用,但我找不到任何不需要 David 登录到计算机或运行执行检查的应用程序的情况。我认为我对安全模型的有限理解也在这里发挥了作用。
有人能给我指出正确的方向吗?我正在寻找的是有关如何在 C# 中解决上述问题(引用、提示、片段)的提示,而无需依赖 David 运行任何应用程序。
如果有任何问题需要澄清,请告诉我。
最佳答案
添加对 DirectoryServices.AccountManagement 的引用
然后添加一条using语句:
using System.DirectoryServices.AccountManagement;
然后在您的主过程中(或其他需要的地方,调用过程 IsMember:
string userName = "David";
string GroupName = "Team 1";
bool test = IsMember(userName, GroupName);
public static bool IsMember(string UserName, string GroupName)
{
try
{
UserPrincipal user = UserPrincipal.FindByIdentity(
new PrincipalContext(ContextType.Domain),
UserName);
foreach (Principal result in user.GetAuthorizationGroups())
{
if (string.Compare(result.Name, GroupName, true) == 0)
return true;
}
return false;
}
catch (Exception E)
{
throw E;
}
}
如果 David 在 Team 1,该过程将返回 true,否则返回 false。
关于c# - 从AD获取用户角色的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634706/