代码之家  ›  专栏  ›  技术社区  ›  misanthrop

获取特定ActiveDirectoryGroup的所有用户的列表

  •  1
  • misanthrop  · 技术社区  · 6 年前

    然而,我无法得到一个特定广告组的所有用户的简单列表。

    我在我的控制器里试了以下方法:

    [HttpGet]
    public async Task<IActionResult> Test()
    {    
        string username = HttpContext.User.Identity...; //nothing to find in here
    
        return View();
    }
    

    我发现其他答案使用一些私人用户管理器变量或上下文变量,但我没有他们在我的控制器,和其他答案,我发现,没有告诉我如何得到他们。。。

    任何帮助都将不胜感激。

    2 回复  |  直到 6 年前
        1
  •  1
  •   misanthrop    6 年前

    正如@Chris Pratt在他的评论中提到的,asp.net core2.0没有内置的方法来解决这个问题,但是有一个简单的方法,就是用C#。

    https://stackoverflow.com/a/19604001/9641435

    using System.DirectoryServices.AccountManagement; //can be downloaded via NUGET Package manager
    using System.Collections.Generic;
    
    namespace MYNAMESPACE
    {
        public static class ActiveDirectoryHelper
        {
            public static List<string> GetAllUserRealNamesFromAdGroup(string i_activeDirectyGroup)
            {
                var users = new List<string>();
    
                using (var context = new PrincipalContext(ContextType.Domain, "MY.DOMAIN.NAME"))
                {
                    using (var group = GroupPrincipal.FindByIdentity(context, i_activeDirectyGroup))
                    {
                        if (group != null)
                        {
                            var usersPrincipals = group.GetMembers(true);
                            foreach (UserPrincipal user in usersPrincipals)
                            {
                                //There are also other properties available, but in my case I just need the first and surname:
                                users.Add($"{user.GivenName} {user.Surname}");
                            }
                        }
                    }
                    return users;
                }
            }
        }
    }
    

    现在在我的控制器中,我只需执行以下操作:

    [HttpGet]
    public IActionResult MyAction()
    {
        var myVm = new MyViewModel();
    
        List<string> userList = ActiveDirectoryHelper.GetAllUserRealNamesFromAdGroup("MYGROUP"); 
    
        //do whatever you want with this list right here:
    
    
        return View(myVm);
    }
    

    我希望这篇文章将来能对其他人有所帮助,这就是为什么我把它作为一个答案。

        2
  •  0
  •   POD    6 年前