我必须在C#中检查特定用户的LDAP Active Directory用户组。意思是我将此用户名传递给方法,它返回该用户所属的组列表。你能帮帮我吗?我正在搜索很多,但每次都会遇到新的错误。
LDAP路径:192.168.1.4
域名:Arslan
用户名:ArslanP
密码:testad
答案 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
它提出了相反的问题,即当您了解该组时如何查询用户列表,但其他答案也可能对您有用。
另见这个问题的答案: