查询特定用户用户组的LDAP

时间:2011-03-16 20:54:21

标签: c# asp.net active-directory ldap-query usergroups

我必须在C#中检查特定用户的LDAP Active Directory用户组。意思是我将此用户名传递给方法,它返回该用户所属的组列表。你能帮帮我吗?我正在搜索很多,但每次都会遇到新的错误。

LDAP路径:192.168.1.4

域名:Arslan

用户名:ArslanP

密码:testad

2 个答案:

答案 0 :(得分:1)

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

Managing Directory Security Principals in the .NET Framework 3.5

基本上,添加对程序集System.DirectoryServices.AccountManagement的引用,然后您可以定义域上下文并在AD中轻松查找用户和/或组:

using System.DirectoryServices.AccountManagement;

public List<GroupPrincipal> GetGroupsForUser(string username)
{
  List<GroupPrincipal> result = new List<GroupPrincipal>();

  // set up domain context - if you do a lot of requests, you might
  // want to create that outside the method and pass it in as a parameter
  PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

  // find user by name
  UserPrincipal user = UserPrincipal.FindByIdentity(username);

  // get the user's groups
  if(user != null)
  {
     foreach(GroupPrincipal gp in user.GetAuthorizationGroups())
     {
         result.Add(gp);
     }    
  }

  return result;
}

新的S.DS.AM使得在AD中使用用户和群组变得非常容易:

答案 1 :(得分:0)

这个相关问题可能会对您有所帮助:

Get List of Users From Active Directory In A Given AD Group

它提出了相反的问题,即当您了解该组时如何查询用户列表,但其他答案也可能对您有用。

另见这个问题的答案:

How to get all the AD groups for a particular user?