Active directory ldap嵌套组成员资格筛选器

Active directory ldap嵌套组成员资格筛选器,active-directory,ldap,Active Directory,Ldap,我尝试使用LDAP匹配规则,但无法使用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)) 如果我遗漏了什么,有人能指出吗

我尝试使用LDAP匹配规则,但无法使用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

此组件不正确:
(&(objectclass=*)(memberof:1.2.840.113556.1.4.1941:=)(cn=gasaxena))

也许你的意思是:


(&(objectclass=*)(memberOf:1.2.840.113556.1.4.1941:=cn=gasaxena,)

要了解Active Directory筛选器,请查看

要查找“user1”所属的所有组,请执行以下操作:

在搜索中,将基设置为组容器DN;例如根DN(dc=dom,dc=fr)

将作用域设置为子树

使用以下筛选器:
(成员:1.2.840.113556.1.4.1941:=cn=user1,cn=users,DC=x)

示例使用LDIFDE.EXE(windows上的本机命令行广告搜索):


这将查找jpblanc所属的所有组。

您应该对该组执行类似于以下内容的搜索:

(member:1.2.840.113556.1.4.1941:=CN=John Smith,DC=MyDomain,DC=NET)
不是用户的成员


-jim

在使用memberOf:1.2.840.113556.1.4.1941:=时,您必须使用组的完整可分辨名称。在我的情况下,CN=MyGroup,OU=User,OU=Groups,OU=Security,DC=domain,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=group)(name=MyGroup))来获取组的可分辨名称


谢谢你,特里。但我对LDAP有点陌生,不太理解这个过滤器的概念。你能帮我解释这两种语法吗?这两种语法在服务器解释方面有什么不同。也许这个链接会有帮助:嗨,我尝试过更改过滤器,但仍然无法检索任何搜索条目。我也转储了过滤器:过滤器(&(objectclass=*)(memberof:1.2.840.113556.1.4.1941:=cn=gasaxena))关于我可能缺少什么的任何指针?有没有什么旋钮我们需要打开广告服务器来让这个搜索查询工作?嗨,我被困在这里,需要专家的帮助。我的用户是“SPR”,它位于dc=aaaldap,dc=com下面,现在我尝试发送的过滤器是filter:(&(objectclass=*)(memberof:1.2.840.113556.1.4.1941:=cn=gasaxena,dc=aaaldap,dc=com))阅读我的答案,尝试使用member而不是memberoftanks JPBlanc。不知何故,我在过滤器中忽略了member和memberOf之间的差异。谢谢你的帮助。我纠正了这一点,它现在正在工作。然而,我在基于嵌套用户的多个搜索条目的末尾观察到了ldapsearchresref消息。因此,假设对于嵌套组筛选器,ldapsearchresref将显示搜索项结果结束的最后一条消息,这是一个有效的假设吗?谢谢JIM,在您的帮助下,我能够检索到与用户所属的多个嵌套组对应的多个搜索项。然而,在搜索结束后,我还看到“ldapsearchresref”作为嵌套过滤器搜索的一部分。这是预期的吗?作为搜索结果结束的指标,ldapsearchresref是否是一个有效的假设?
(&(objectCategory=person)(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=MyGroup,OU=User,OU=Groups,OU=Security,DC=domain,DC=com))
    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