1

我正在使用 php 7 使用 LDAP 连接到活动目录。我需要在 C:\openLDAP\sysconf\ldap.conf 下手动创建一个文件,并从不设置 TLS_REQCERT。如果我不创建此文件 ldap 无法连接。

例如,如何将其部署到不包括 C: 磁盘的 azure 机器?

您知道解决此错误的更好方法吗?

我试过这个: Need help ignoring server certificate while binding to LDAP server using PHP

   putenv('LDAPTLS_REQCERT=never');

但它不起作用。

4

1 回答 1

1

我知道它的年代,但我遇到了同样的问题,这就是我所做的,这就是@ChadSikorra 所说的。

  1. 在站点根目录中放置一个 .php 脚本(我做了 test/ldap.php),它与 ldap 有连接,在php ldap_connect()

    ini_set('display_errors', 1);
    
    error_reporting(E_ALL);
    
    ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
    
    
  2. 使用站点根目录中的 Kudu CMD、cd test、php ldap.php

这是结果

ldap.php 日志

  1. 注意第 5 条红线,导航到 D:/ 并创建.ldaprc文件

  2. 编辑文件并粘贴TLS_REQCERT never,保存,重复步骤 2。

  3. 如果您的应用程序正在运行,请转到应用程序控制台并重新启动服务器。

完毕!

完整的 ldap.php 文件如下

$username = "USERNAME";
$password = "PASSWORD";
$adServer = "IP"; //or domain
$adPort = 389;
$ldaprdn = "DOMAIN\\$username";

ldap_set_optioNULL, LDAP_OPT_DEBUG_LEVEL, 7);

putenv('LDAPTLS_REQCERT=never');

$ldap = ldap_connect("ldaps://$adServer", $adPort);

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

$bind = ldap_bind($ldap, $ldaprdn, $password);

if ($bind) {
    echo "Connection successful";
    @ldap_close($ldap);
} else {
    echo "Invalid email address / password";
}
于 2020-05-26T07:17:20.320 回答