多个OU上的Ldap查询

时间:2012-11-05 11:17:22

标签: php active-directory ldap-query

我在PHP中编写了一个ldap查询类来验证用户身份。 我需要查询ldap服务器到多个OU,这是一个例子:

DC=mydomain,DC=com
    OU=MyBusiness
        CN=MyGroup

DC=mydomain,DC=com
    OU=Users
        CN=Domain Users

在这个域中,我有两个OU,一个我的自定义OU和一个组。另一种是标准的Windows OU。 我想创建一个查询来获取两个组,一个在OU = Users内,另一个在OU = MyBusiness中......但似乎是不可能的。 我试过这个连接:

$r=ldap_connect($ldap_host,$ldap_port);
ldap_bind($r,$user,$passw);
$domain="OU=MyBusiness,DC=mydomain,DC=com";
$sr=ldap_search($r, $domain ,"(&(objectClass=user)(sAMAccountName=".$user."))");

但只有MyBusiness的小组,我也试过这些:

$domain="OU=Users,DC=mydomain,DC=com"; //gets only the other group
$domain="DC=mydomain,DC=com"; //error
$domain="OU=*,DC=mydomain,DC=com"; //error

但没有人工作。我该怎么办?

1 个答案:

答案 0 :(得分:0)

在这里你去 - 这应该这样做。 (那些ldap_options是顶级" DC = mydomain,DC = com"搜索)

$r=ldap_connect($ldap_host,$ldap_port);
ldap_set_option($r, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($r, LDAP_OPT_REFERRALS, 0);
ldap_bind($r,$user,$passw);
$search = "(&(objectClass=user)(sAMAccountName=$user))";
$attributes = array("cn","displayName","dn");
$sr=ldap_search($r,$domain,$search,$attributes);
$results = ldap_get_entries($r,$sr);
foreach ($results as $result) {
  echo $result['cn'];
}