2012-09-24 145 views
1

我試過使用LDAP匹配規則,但我無法檢索搜索條目usind 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

回答

0

此組件不正確:(&(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>))

+0

謝謝特里。但我對LDAP很陌生,不太瞭解這個過濾器的概念。您能否幫我解釋兩種語法,以及兩者在服務器解釋方面有何不同? –

+0

也許這個鏈接將幫助:[廣告搜索過濾器語法](http://msdn.microsoft.com/en-us/library/windows/desktop/aa746475(v = vs.85).aspx) –

+0

嗨, 我嘗試通過更改過濾器,但仍然無法檢索任何搜索條目。我也拋棄了過濾器: filter(&(objectclass = *)(memberof:1.2.840.113556.1.4.1941:= cn = gasaxena)) 關於我可能缺少的任何指針?是否有任何我們需要打開AD服務器以使此搜索查詢工作的旋鈕? –

2

要了解活動目錄的過濾器,只要看看到Search Filter Syntax

要查找所有組認爲「USER1」是的成員:

在你的搜索,設置基本的組容器DN;例如根DN(DC = DOM,DC = FR)

設置的範圍,以子樹

使用以下濾波器:(member:1.2.840.113556.1.4.1941:=cn=user1,cn=users,DC=x)

與LDIFDE.EXE(本地命令行AD搜索上windows):

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所屬的所有組。

+0

嗨, 我被困在這裏,可以使用一些專家的幫助。 我的用戶是「SPR」,它位於dc = aaaldap,dc = com 現在我想發送的過濾器是 過濾器:(&(objectclass = *)(memberof:1.2.840.113556.1.4.1941: = cn = gasaxena,dc = aaaldap,dc = com)) –

+0

閱讀我的答案,嘗試與成員,而不是成員 – JPBlanc

+0

Thannks JPBlanc。我以某種方式設法錯過了我的過濾器中的成員和memberOf之間的區別。謝謝你的幫助。我糾正了這一點,現在它正在工作。但是,我在基於嵌套用戶的多個搜索條目結束時觀察ldapsearchresref消息。那麼,假設對於嵌套組過濾器,ldapsearchresref將最後一條消息指示搜索條目結尾 –

3

您應該執行鍼對類似組搜索:

(member:1.2.840.113556.1.4.1941:=CN=John Smith,DC=MyDomain,DC=NET) 

沒有的memberOf用戶。

-Jim

+0

感謝JIM, 在您的幫助下,我能夠檢索多個與多個嵌套組對應的搜索條目哪個用戶是其中的一部分。但是,在搜索結束後,我還將「ldapsearchresref」視爲此嵌套過濾器搜索的一部分。這是預期的嗎?它會是一個有效的假設ldapsearchresref作爲我的搜索結果的結束標誌嗎? –

0

使用的memberOf時,您必須使用組的完全可分辨名稱:在我的情況CN = MyGroup的,OU =用戶,OU = =組:1.2.840.113556.1.4.1941 ,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)) 

您可以通過運行下面的代碼,並把這個過濾器(&(對象類=組得到您的專有名稱組))(name = 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