使用PHP连接活动目录或LDAP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用PHP连接活动目录或LDAP相关的知识,希望对你有一定的参考价值。

我试图将窗口的活动目录或LDAP与php生成的应用程序(GLPI)连接起来。

连接参数:

连接服务器:

$ds = ldap_connect($host, $port) // return true

@ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);

@ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

@ldap_set_option($ds, LDAP_OPT_DEREF, $deref_options);

关联与服务器,用户和密码的连接

ldap_bind ($ds, $ login, $ password)

回报我:

“无法联系LDAP服务器”

我想知道该错误消息会发生什么,因为在第一种方法中它返回true给我,这意味着如果它连接到服务器。

RootDN这很好,并且具有我正在使用的用户的所有权限。

默认服务器很好,我做了pingtelnet

注意:我已经下载了LDAPExplorer并建立了连接而没有问题。

答案

缺少:$ds = ldap_connect ...是否与代码中的相似?

它应该是这样的:

$ds = ldap_connect($host, $port);

@ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);

@ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

@ldap_set_option($ds, LDAP_OPT_DEREF, $deref_options);

ldap_bind ($ds, $login, $password)
另一答案

ldap_connect没有连接到服务器,正如docs中明确指出的那样。它只是创建一个资源并检查给定的值是否合理。使用需要连接到服务器的第一个命令建立实际连接。在这种情况下ldap_bind

BTW:“第一种方法”不返回true,而是返回资源句柄。只有当你传递绝对不可解析的东西时,它才会返回false。但从来没有true

我建议使用LDAP-URI而不是$host, $port变体,因为PHP库必须这样做,否则就是内部。这是f.e.的唯一途径。建立LDAPS连接。

另一答案

好的,我的问题的解决方案是从GLPI版本9.3.0升级到9.3.3。

建议:

  • 对于用户,可能会发生这种情况,验证GLPI有关挂起的安装包的消息。所以我选择了更新,连接工作没有问题。
  • 对于无法更新版本的用户,请验证apache软件包是否有待安装或更新,同样在安装过程中的安装过程中,要非常小心地安装似乎待处理的整个列表。

要通过安装版本9.3.3来修复某些错误:

chown -R apache: apache glpi / files

chmod -R 755 glpi / files

chown -R apache: apache config

chmod -R 755 glpi / config

也:

setsebool -P httpd_can_network_connect_db 1

谢谢。

以上是关于使用PHP连接活动目录或LDAP的主要内容,如果未能解决你的问题,请参考以下文章

Nextcloud 通过 LDAP 使用 Samba

使用 python + ldap 对活动目录进行身份验证

Wso2 身份服务器连接配置与 Microsoft 活动目录

使用spring嵌入式ldap模拟活动目录进行集成测试

Grails - Spring 安全 ldap 活动目录身份验证 - 凭据错误错误

用于数据加载的 Android 活动/片段职责