嵌套的 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。
在 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。