2

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

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

但没有人工作。我能怎么做?

4

1 回答 1

0

给你 - 这应该这样做。(顶级“DC=mydomain,DC=com”搜索需要这些 ldap_options)

$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'];
}
于 2014-09-08T14:47:00.937 回答