嵌套的 LDAP 搜索属性

Nested LDAP search for an attribute

在 AD 服务器中,我们有一个名为 directreports 的属性。我希望能够在链中从上到下。 CEO 他的直接下属是 A、B、C。由于直接下属是 D、E、F,而 B 的直接下属是 G、H、I。然后 D 的直接下属是 X、Y、Z 等,一直向下。

我曾将其视为嵌套组之类的东西,但事实并非如此。我迷失了如何一起解决这一切。我正在尝试在 PHP 中执行此操作。我的 php 代码现在只搜索用户并给我直接下属。

<?php

function aduserlookup ($UserName)
{
    include_once 'config.php';
    $ldapconn = ldap_connect("ldap://<IP>:389") or die("Could not connect to the ldap server");

    if($ldapconn) {
        $r = @ldap_bind($ldapconn, $ldapuser."@test.com", $ldappass);
        $sr=ldap_search($ldapconn, "OU=Employees,OU=Users,DC=test,DC=com", 
"cn=" . $UserName);  
        $info = ldap_get_entries($ldapconn, $sr);
        ldap_close($ldapconn);
        return $info;
    } else {
            echo "<h4>Unable to connect to LDAP server</h4>";
    }
}

$user = aduserlookup('test');
$directreports = $user[0]['directreports'];
echo '<pre>';
var_dump($directreports);
echo '</pre>';

foreach ($directreports as $key => $value)
{
        $directreports = substr($value, 0, strpos($value, ","));
        $directreports = strstr($directreports, '=');
        $directreports = str_replace('=', '', $directreports);
        $directreports1 = aduserlookup('\'' . $directreports . '\'');
        echo $directreports1 . "<br>";
}
?>

如果您使用的是 Microsoft Active Directory,并且如果我了解您要查找的内容, 您可以 Query All users that report to a department manager or their subordinates 使用此查询

(manager:1.2.840.113556.1.4.1941:=CN=manager,OU=users,DC=willeke,DC=com)

DirectReports 是服务器生成的直接向 "manager" 报告的用户列表。列为报告的用户是那些将 属性 经理 属性 设置为此用户的用户。列表中的每一项都是代表用户的对象的 Linked Attribute