LDAP过滤器 - 查找特定OU的所有用户

时间:2013-10-10 17:17:06

标签: php active-directory ldap ldap-query

我遇到LDAP Search Filter时遇到问题。我需要检索的是LDAP

的特定OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local组的所有用户

我的搜索是:

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

目前它没有返回任何结果。我错过了什么?

1 个答案:

答案 0 :(得分:4)

你必须做两件事

  1. 设置搜索OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local
  2. 的基础
  3. 使用objectClass搜索对象。
  4. 使用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)"