首页 > 解决方案 > LDAP递归地从组中获取用户

问题描述

直升机,

在 LDAP 中具有这种结构:

- Group1
    - User1
    - User2
- Group2
    - Group1
- Group3
    - Group2

我需要一个 PHP 函数,它会给我一个传递组的用户数组(仅限用户)。例如:

$array_users = getLdapGroupUsers (Group3)

结果应该是:

$array_users = ['User1','User2']

有什么帮助吗?

我试过了,但没有任何结果:

$ldap = ldap_connect($ip) or die('Could not connect to LDAP');
ldap_bind($ldap, $basedn, $passwd) or die('Could not bind to LDAP');
$gFilter = '(&(objectClass=group)(member:1.2.840.113556.1.4.1941:=Group3,CN=Users,DC=domain,DC=net))';
$gAttr = array('cn');
$result = ldap_search($ldap, $basedn, $gFilter, $gAttr) or exit('Unable to search LDAP server');

标签: phpsymfonyldap

解决方案


我发现了错误。我们的 LDAP 服务器是 Samba 4.1.17,它没有递归特性。我连接到另一台服务器(Samba 4.7.6),女巫具有此功能,并且效果很好,如下所示:

$ldap = ldap_connect($ip) or die('Could not connect to LDAP');
ldap_bind($ldap, $dn, $passwd) or die('Could not bind to LDAP');
$gFilter = '(&(objectClass=posixAccount)(memberOf:1.2.840.113556.1.4.1941:=CN=Group3,CN=Users,DC=domain,DC=net))';
$gAttr = array('cn');
$result = ldap_search($ldap, $basedn, $gFilter, $gAttr) or exit('Unable to search LDAP server');
$users = ldap_get_entries($ldap, $result);

推荐阅读