Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-LDAP-Fetching用户';组GUID,而不是名称_Php_Ldap_Guid - Fatal编程技术网

PHP-LDAP-Fetching用户';组GUID,而不是名称

PHP-LDAP-Fetching用户';组GUID,而不是名称,php,ldap,guid,Php,Ldap,Guid,我正在为我工作的一家公司建立一个网站。我想在已经在使用的LDAP服务器上运行一些。现在我有它的链接,可以登录和注销,这不是什么大问题 我的下一步似乎变得更为延迟,是用户组和权限。我希望能够获得用户所属的组。通常,这将只返回组的完整字符串,但我更希望有GUID 我知道我可以获取字符串并查询服务器,然后获取组GUID。对于服务器来说,这似乎需要更多的处理 我想用这个来登录数据库。如果名称更改,则用户列表不会更改。如果基于完整字符串而不是GUID,则会导致太多问题,并在数据库中存储太多内容 我的另一个

我正在为我工作的一家公司建立一个网站。我想在已经在使用的LDAP服务器上运行一些。现在我有它的链接,可以登录和注销,这不是什么大问题

我的下一步似乎变得更为延迟,是用户组和权限。我希望能够获得用户所属的组。通常,这将只返回组的完整字符串,但我更希望有GUID

我知道我可以获取字符串并查询服务器,然后获取组GUID。对于服务器来说,这似乎需要更多的处理

我想用这个来登录数据库。如果名称更改,则用户列表不会更改。如果基于完整字符串而不是GUID,则会导致太多问题,并在数据库中存储太多内容

我的另一个想法/选择是搜索并缓存表中的所有guid,如果名称发生更改,则更新名称。通过这种方式,我不需要在LDAP服务器上查询我需要的内容,并且可以在同一台服务器中管理所有内容。服务器在同一个网络中,但在本地运行时总是最快的

TL;DR 是否有一种方法可以查询LDAP服务器并获取用户所在组的列表,返回组GUID而不是其全名


我还不太熟悉使用LDAP,以防遗漏任何东西。

我认为进行本地复制太过分了,openldap可以每秒执行22000次查询或4800次更新,并且可以包含多达1.5亿个条目(2006年基准测试)

这是LDAP的工作,它通常做得很好。
当用户/组发生更改时,您的本地复制只涉及延迟,这可能是错误的根源,但不会带来显著的改进。

如果我完全偏离主题,很抱歉,但这似乎是ldap\u搜索的一个基本选项?如果您尝试:ldap_搜索($link_identifier,$base_dn,$filter,[“guid”]);搜索用户是有效的。问题是它从不返回它们所属组的GUID。相反,它返回包含域控制器、组织单位和公共名称的完整字符串。为了节省空间,并在组名发生更改时保留设置,我更喜欢脱离GUID。我认为完整字符串的名称是可分辨名称,以供参考。我已决定将组列表及其GUID缓存到sql表中。这样,如果需要的话,我可以将数据与其他查询结合起来,并且我不会向LDAP服务器发送垃圾查询。我们不会做太多的组更改。我设置了一个cron任务,每小时更新一次。更糟糕的情况是,如果需要,我将函数设置为反向查找以接受force requery参数以绕过缓存。主要原因是大多数用户可能分配了5到20个组。当在几乎每个页面请求上检查它们时,它们可以相当快地相加。加上大约300个地点、20名董事和其他员工。并非每个位置都会同时打开,但我不想在LDAP服务器已经在查询其他服务时让它陷入困境。