2013-10-10 475 views
4

我遇到LDAP Search Filter問題。LDAP篩選器 - 查找特定OU的所有用戶

(&(objectCategory=user)(OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local)) 

目前它返回任何結果:我所需要檢索特定LDAP組是OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local

我搜索的所有用戶的。我錯過了什麼?

+0

機會是OU =員工不是「組」。它是一個「組織單位」。它包含組,有點像一個文件夾包含文件。 – ixe013

回答

4

你必須做兩件事

  1. 設置搜索OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local
  2. 搜索與objectClass對象的基礎。

使用PHP,搜索應該是這樣的(基於this PHP sample):

<?php 
//You must bind, first 
// using ldap bind 
$ldaprdn = 'yourdomain\nic_hubbard';  // ldap rdn or dn 
$ldappass = 'password'; // associated password 

// connect to ldap server 
$ldapconn = ldap_connect("yourad.test.local") 
    or die("Could not connect to LDAP server."); 

if ($ldapconn) { 

    // binding to ldap server 
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass); 

    $dn = "OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local"; 
    $filter="(objectClass=user)"; 
    $justthese = array("cn", "sn", "givenname", "mail"); 

    $sr=ldap_search($ldapconn, $dn, $filter, $justthese); 

    $info = ldap_get_entries($ldapconn, $sr); 

    echo $info["count"]." entries returned\n"; 
} 

?> 

你可以在命令行上測試(確切的選項不同,這部作品最近OpenLDAP的客戶端工具) :

ldapsearch -H ldap://yourad.test.local -x -D "yourdomain\nic_hubbard" -W -b "OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local" -s sub "(objectClass=user)" 
+0

嗯,我已經做到了,它沒有返回任何結果......這是使用PHP。 –