php - 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');
解决方案
我发现了错误。我们的 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);
推荐阅读
- c# - 在 C# 中使用 BinaryFormatter 序列化对同一对象的引用
- facebook - 如何将 Facebook 应用列入白名单或连接到 Facebook 代表?
- javascript - 如何在nodejs中下载文件(http和https)并实时查看/显示下载进度?
- python - 为什么我收到 TypeError: calcFolders() missing 1 required positional argument: 'self'?
- java - 从firebase中删除项目的正确方法
- c# - 构建 azure Pipeline 中的某些库的“nuget restore”问题
- c# - 如何在使用参数时打印带有其值的sql语句
- tensorflow - 100行Tensorflow代码和Keras等价的结果不一样,Tensorflow结果不收敛,为什么?
- php - 使用 $_POST 检索选中的复选框
- eclipse - 设置 Spring Tools 4 日志记录级别