如果我需要在 LDAP 和 PHP 中搜索两个子文件夹,我应该为 $base_dn 添加什么

What to I put for $base_dn if I need to search two subfolders in LDAP and PHP

我对执行 LDAP 搜索只有非常基本的了解。我正在使用 PHP 和 Laravel。

我正在尝试搜索我的 OU=USERS 目录中的所有用户。我在其中有两个子文件夹:OU=STAFFOU="STUDENTS。我希望能够在这两个目录中通过用户名搜索特定的 DN。问题是,如果我指定 STAFFSTUDENTS 目录,我只能进行搜索。我目前有:

...
$base_dn = 'OU=USERS,DC=mysite,DC=mydomain,DC=edu';
$filter = "(&(objectClass=person)(sAMAccountName=$username))";

$result = ldap_search($connection, $base_dn, $filter);
$entries = ldap_get_entries($connection, $result);


foreach ($entries as $entry) {
    $ldapUsername = $entry["sAMAccountName"][0];
    echo $ldapUsername;
    return;
}

如果我指定其中一个,它将起作用

$base_dn = 'OU=STAFF,OU=MMM_USERS,DC=mmc,DC=mmm,DC=edu';

$base_dn = 'OU=STUDENTS,OU=MMM_USERS,DC=mmc,DC=mmm,DC=edu';

但并非没有。

总的来说,我只是想根据用户名(也是他们的 cn 和他们的 LDAP 密码来验证用户。然而,据我所知,我需要先获取他们的 DN,以尝试 bindDN 和密码的连接,取自 PHP 表单输入.

任何关于具体细节或整体方法的建议将不胜感激。

根据您的 LDAP 服务器实现,您可以使用 extensible matching filter

但是,我怀疑您使用的是 Microsoft Active Directory,它不支持您希望执行的可扩展匹配。

-吉姆