【问题标题】:Deploy php with ldap.conf使用 ldap.conf 部署 php
【发布时间】:2020-05-26 15:17:20
【问题描述】:

我正在使用 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');

但它不起作用。

【问题讨论】:

  • PHP 7.1 有这方面的选项,你可以在没有配置文件的情况下设置,但我猜你被困在 PHP 7.0 上?您可以通过门户连接到您的 web 应用程序的控制台会话,并确定您的用户主目录是什么,然后在该位置放置一个 .ldaprc 文件以及您需要的选项。或者在 LDAP_OPT_DIAGNOSTIC 设置为 7 的情况下通过控制台运行 PHP 文件,然后查看它在哪里寻找配置文件。
  • 非常感谢您的 awnser 但有一个问题,您知道如何在没有可执行文件的情况下自动在 azure windows 服务器上部署 openLDAP 吗?

标签: php azure ldap openldap ldapconnection


【解决方案1】:

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

  1. 在与 ldap 有连接的站点根目录中放置一个 .php 脚本(我做了 test/ldap.php),在 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

这就是结果

  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";
}

【讨论】:

  • 永远不要使用 TLS_REQUICERT=never,除非您确切知道自己在做什么。您正在打开与 MITM 攻击的联系。 I blogged 关于替代解决方案
  • 在我的例子中,这是作为一个服务存在于一个封闭的网络中。对于网络应用程序等应用程序,请忽略该行。谢谢@heiglandreas
  • 所以你知道自己在做什么;-)
猜你喜欢
  • 1970-01-01
  • 2011-06-21
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多