gpt4 book ai didi

c# - 从 AD 获取用户角色的简单方法?

转载 作者:行者123 更新时间:2023-11-30 21:04:02 25 4
gpt4 key购买 nike

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

  • 组织
    • 团队 1
      • 大卫 (用户)
  • 群组
    • 申请A
      • 第 1 队 (从上方分组)

仅列出 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 在第 1 队中,该过程将返回 true,否则返回 false。

关于c# - 从 AD 获取用户角色的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634706/

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