我尝试使用LDAP匹配规则,但我不能检索usind LDAP匹配规则过滤搜索条目。
这就是我如何发送过滤:过滤器(&(objectclass=*)(memberof:1.2.840.113556.1.4.1941:=)(cn=gasaxena))
我倾倒在过滤器在LDAP服务器上接收到的,以及PCAP,这是它的样子:过滤器: (&(&(objectclass=*)(memberof:1.2.840.113556.1.4.1941:=[NULL]))(cn=gasaxena))
可有人指出,如果我还遗漏了什么? 该服务器是AD
要了解活动目录的过滤器,只要看看对搜索过滤器语法 。
要查找所有组认为“USER1”是的成员:
在你的搜索,设置基本的组容器DN; 例如根DN(DC = DOM,DC = FR)
将范围设置为子树
使用下面的过滤器: (member:1.2.840.113556.1.4.1941:=cn=user1,cn=users,DC=x)
例如用LDIFDE.EXE(在Windows本地命令行AD搜索):
ldifde -f t.txt -d "DC=dom,DC=fr" -r "(member:1.2.840.113556.1.4.1941:=CN=jblanc,OU=MonOu,DC=dom,DC=fr)"
这个发现所有的群体jpblanc是的成员。
您应该执行针对类似组搜索:
(member:1.2.840.113556.1.4.1941:=CN=John Smith,DC=MyDomain,DC=NET)
不是的memberOf用户。
-Jim
该组件是不正确的: (&(objectclass=*)(memberof:1.2.840.113556.1.4.1941:=)(cn=gasaxena))
也许你的意思是:
(&(objectclass=*)(memberOf:1.2.840.113556.1.4.1941:=cn=gasaxena,<superior-portion-of-distinguished-name-here>))
1.2.840.113556.1.4.1941:使用的memberOf时,必须使用组的完全可分辨名称=在我的情况下,CN = MyGroup的,OU =用户,OU =组,OU =安全,DC =域,DC = com的是整个专有名称
(&(objectCategory=person)(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=MyGroup,OU=User,OU=Groups,OU=Security,DC=domain,DC=com))
您可以通过运行下面的代码并在此过滤器将让你组的专有名称(&(objectClass的=组)(名称= MyGroup的))
Imports System.DirectoryServices
Module Module1
Sub Main()
Dim run As Boolean = True
Dim Filter As String
While run
Console.WriteLine("Enter Filter:")
Filter = Console.ReadLine()
If Filter = "exit" Then
run = False
Else
checkFilter(Filter)
End If
End While
End Sub
Function checkFilter(Filter As String) As Boolean
Dim search As New DirectorySearcher("LDAP://dc=Domain,dc=com")
Try
search.Filter = Filter
search.PropertiesToLoad.Add("name")
search.PropertiesToLoad.Add("distinguishedName")
search.SearchScope = SearchScope.Subtree
Dim results As SearchResultCollection = search.FindAll()
If results Is Nothing Then
Console.WriteLine("Nothing")
Return False
Else
If results.Count() = 0 Then
Console.WriteLine("non found")
End If
Dim result As SearchResult
For Each result In results
Console.WriteLine(result.Properties("name")(0).ToString())
Console.WriteLine(result.Properties("distinguishedName")(0).ToString())
'For Each prop In result.Properties("members")
' Console.WriteLine(prop.ToString())
'Next
Next
Console.WriteLine(String.Format("{0} Users Found", results.Count()))
End If
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Return True
End Function
End Module