获取特定 ActiveDirectoryGroup 的所有用户列表
Get List of all users of specific ActiveDirectoryGroup
您好,我尝试获取 ActiveDirectory 组的所有用户的列表。 Windows 身份验证已正确设置并按预期工作。我还可以将特定的控制器操作限制为特定的 AD 组/角色。
但是我无法获得特定 AD 组的所有用户的简单列表。
我在控制器中尝试了以下操作:
[HttpGet]
public async Task<IActionResult> Test()
{
string username = HttpContext.User.Identity...; //nothing to find in here
return View();
}
我使用一些私有 UserManager 变量或上下文变量找到了其他答案,但是我的控制器中没有它们,而且我找到的其他答案没有告诉我如何获得它们...
非常感谢任何帮助。
不太确定使用 powershell 是否是您在 AD 中获取组的列出用户的选项--- Get-ADGroup "group name" |获取 ADGroupMember | Select-对象 samaccountname
正如@Chris Pratt 在他的评论中提到的,asp.net 核心 2.0 没有内置方法来解决这个问题,但有一个简单的方法,用 C# 来解决。
所以我做的很简单,首先我创建了以下 class(深受启发:)
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);
}
我希望这个 post 将来可以帮助其他人,这就是我 post 编辑它作为答案的原因。
您好,我尝试获取 ActiveDirectory 组的所有用户的列表。 Windows 身份验证已正确设置并按预期工作。我还可以将特定的控制器操作限制为特定的 AD 组/角色。
但是我无法获得特定 AD 组的所有用户的简单列表。
我在控制器中尝试了以下操作:
[HttpGet]
public async Task<IActionResult> Test()
{
string username = HttpContext.User.Identity...; //nothing to find in here
return View();
}
我使用一些私有 UserManager 变量或上下文变量找到了其他答案,但是我的控制器中没有它们,而且我找到的其他答案没有告诉我如何获得它们...
非常感谢任何帮助。
不太确定使用 powershell 是否是您在 AD 中获取组的列出用户的选项--- Get-ADGroup "group name" |获取 ADGroupMember | Select-对象 samaccountname
正如@Chris Pratt 在他的评论中提到的,asp.net 核心 2.0 没有内置方法来解决这个问题,但有一个简单的方法,用 C# 来解决。
所以我做的很简单,首先我创建了以下 class(深受启发:)
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);
}
我希望这个 post 将来可以帮助其他人,这就是我 post 编辑它作为答案的原因。