gpt4 book ai didi

asp.net - 找出 AD 中的组是否在通讯组中?

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

我在 C# 中使用 ASP.net 并且对 Active Directory 知之甚少。我的任务是按以下步骤编写程序:

ASP.net 应用程序被赋予一个用户的用户名。

应用程序应该使用给定的用户名查询用户的所有组。

然后应用程序应该在两个单独的列表中显示这些组,一个由通讯组组成,在另一个列表中显示其余的组。

现在,查询所有组很容易。但是如何检查该组是否在通讯组中?

我没有得到更多信息。

任何属性或我可以检查的东西?

最佳答案

由于您使用的是 .NET 3.5 及更高版本,您应该查看 System.DirectoryServices.AccountManagement (S.DS.AM) 命名空间。在这里阅读所有相关信息:

  • Managing Directory Security Principals in the .NET Framework 3.5
  • MSDN docs on System.DirectoryServices.AccountManagement

  • 基本上,您可以定义域上下文并轻松找到 AD 中的用户和/或组:
    // set up domain context
    PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

    // find a user
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

    if(user != null)
    {
    // get all roles for that user
    var roles = user.GetGroups();

    // set up two lists for each type of groups
    List<GroupPrincipal> securityGroups = new List<GroupPrincipal>();
    List<GroupPrincipal> distributionGroups = new List<GroupPrincipal>();

    // iterate over groups found
    foreach (Principal p in roles)
    {
    // cast to GroupPrincipal
    GroupPrincipal gp = (p as GroupPrincipal);

    if (gp != null)
    {
    // check whether it's a security group or a distribution group
    if (gp.IsSecurityGroup)
    securityGroups.Add(gp);
    else
    distributionGroups.Add(gp);
    }
    }
    }

    新的 S.DS.AM 使在 AD 中与用户和组一起玩变得非常容易!

    关于asp.net - 找出 AD 中的组是否在通讯组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962483/

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