Php adLDAP 错误 - 无法绑定到服务器:需要强(呃)身份验证
Php adLDAP Error - Unable to bind to server: Strong(er) authentication required
我正在尝试使用 PHP adLDAP version 4.04 在企业网络上进行身份验证,但尚未成功。
PHP Version 5.2.4
我试过这个 Whosebug post PHP ldap - Strong(er) authentication required,没有成功。
我不是此域控制器的管理员;我只需要能够查询即可。
我可以 ping HOSTNAMEOFDC.domain.location.company.com
(我的域控制器的 FQDN)
域控制器是Windows Server 2012 R2 Standard
。
我已经使用 DsQuery
和 PowerShell AD Module
成功查询了这个域控制器,没有任何问题,也没有我必须手动输入的身份验证。
我的代码:
<?php
require_once("includes/php/adLDAP/src/adLDAP.php");
$username = "domain\username"; // also tried just "username"
$password = "somepassword";
// All possible settings are listed in this array
$options = array(
"account_suffix" => "@domain.location.company.com",
// "admin_username" => $username,
// "admin_password" => $password,
// "ad_port" => "636",
// "base_dn" => "DC=domain,DC=location,DC=company,DC=com",
"domain_controllers" => array("HOSTNAMEOFDC.domain.location.company.com"),
// "real_primarygroup" => "",
// "recursive_groups" => "",
// "use_ssl" => true
// "use_tls" => true
);
$adldap = new adLDAP($options);
// $authUser = $adldap->user()->authenticate($username, $password);
$authUser = $adldap->user()->authenticate($username,$password);
if ($authUser) {
echo "User authenticated successfully";
} else {
// getLastError is not needed, but may be helpful for finding out why:
echo $adldap->getLastError() . "<br>";
echo "User authentication unsuccessful";
}
// Destroy
$adldap->close();
$adldap->__destruct();
?>
我收到错误:
Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Strong(er) authentication required in C:\xampp\htdocs\Workspace\Project\scripts\includes\php\adLDAP\src\adLDAP.php on line 712
Strong(er) authentication required
User authentication unsuccessful
然后当我取消注释 "use_ssl" => true"
时,我得到这个错误:
仅供参考,ssl
已加载到我的 php.ini
Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Can't contact LDAP server in C:\xampp\htdocs\Workspace\Project\scripts\includes\php\adLDAP\src\adLDAP.php on line 712
Can't contact LDAP server
User authentication unsuccessful
我也试过取消注释 "use_tls" => true"
但我收到了这个错误:
Warning: ldap_start_tls() [function.ldap-start-tls]: Unable to start TLS: Connect error in C:\xampp\htdocs\Workspace\Project\scripts\includes\php\adLDAP\src\adLDAP.php on line 638
Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Can't contact LDAP server in C:\xampp\htdocs\Workspace\Project\scripts\includes\php\adLDAP\src\adLDAP.php on line 712
Can't contact LDAP server
User authentication unsuccessful
此答案与 PHP 5.2 -5.3 有关,此错误已在较新版本中修复(可能)
烦人的是,当 PHP 返回错误 无法绑定到服务器:需要强(呃)身份验证 - 它实际上是在告诉你它需要一个证书或一组证书 在您的本地计算机上 并有一个 .conf
文件指向它们。
我创建了一个目录:C:\openldap\sysconf
(之前不存在)。
我在 C:\openldap\sysconf
中创建了文件 ldap.conf
在 *nix 中,你可能会把它放在 /etc
或那里的子目录中,但我还没有测试过。
我找到了我们证书的 PEM 文件并将其解压缩到目录中(一个 PEM 文件基本上是一个文件中的整个证书链)。
在 ldap.conf
中,我添加了以下行:TLS_CACERT C:\openldap\sysconf\Certs.pem
如果您无法获得 PEM 证书,您可以使用 TLS_REQCERT never
代替。 这样做时要小心。这样做会让自己暴露在中间人的攻击之下。它不会验证端点。
一旦我这样做,我就成功绑定了。
如果这不起作用,请尝试将 ldap.conf
放入 C:\
(根级别);它似乎取决于您使用的 PHP 版本 - 它决定在不同的地方寻找 ldap.conf
.
我正在尝试使用 PHP adLDAP version 4.04 在企业网络上进行身份验证,但尚未成功。
PHP Version 5.2.4
我试过这个 Whosebug post PHP ldap - Strong(er) authentication required,没有成功。
我不是此域控制器的管理员;我只需要能够查询即可。
我可以 ping HOSTNAMEOFDC.domain.location.company.com
(我的域控制器的 FQDN)
域控制器是Windows Server 2012 R2 Standard
。
我已经使用 DsQuery
和 PowerShell AD Module
成功查询了这个域控制器,没有任何问题,也没有我必须手动输入的身份验证。
我的代码:
<?php
require_once("includes/php/adLDAP/src/adLDAP.php");
$username = "domain\username"; // also tried just "username"
$password = "somepassword";
// All possible settings are listed in this array
$options = array(
"account_suffix" => "@domain.location.company.com",
// "admin_username" => $username,
// "admin_password" => $password,
// "ad_port" => "636",
// "base_dn" => "DC=domain,DC=location,DC=company,DC=com",
"domain_controllers" => array("HOSTNAMEOFDC.domain.location.company.com"),
// "real_primarygroup" => "",
// "recursive_groups" => "",
// "use_ssl" => true
// "use_tls" => true
);
$adldap = new adLDAP($options);
// $authUser = $adldap->user()->authenticate($username, $password);
$authUser = $adldap->user()->authenticate($username,$password);
if ($authUser) {
echo "User authenticated successfully";
} else {
// getLastError is not needed, but may be helpful for finding out why:
echo $adldap->getLastError() . "<br>";
echo "User authentication unsuccessful";
}
// Destroy
$adldap->close();
$adldap->__destruct();
?>
我收到错误:
Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Strong(er) authentication required in C:\xampp\htdocs\Workspace\Project\scripts\includes\php\adLDAP\src\adLDAP.php on line 712
Strong(er) authentication required
User authentication unsuccessful
然后当我取消注释 "use_ssl" => true"
时,我得到这个错误:
仅供参考,ssl
已加载到我的 php.ini
Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Can't contact LDAP server in C:\xampp\htdocs\Workspace\Project\scripts\includes\php\adLDAP\src\adLDAP.php on line 712
Can't contact LDAP server
User authentication unsuccessful
我也试过取消注释 "use_tls" => true"
但我收到了这个错误:
Warning: ldap_start_tls() [function.ldap-start-tls]: Unable to start TLS: Connect error in C:\xampp\htdocs\Workspace\Project\scripts\includes\php\adLDAP\src\adLDAP.php on line 638
Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Can't contact LDAP server in C:\xampp\htdocs\Workspace\Project\scripts\includes\php\adLDAP\src\adLDAP.php on line 712
Can't contact LDAP server
User authentication unsuccessful
此答案与 PHP 5.2 -5.3 有关,此错误已在较新版本中修复(可能)
烦人的是,当 PHP 返回错误 无法绑定到服务器:需要强(呃)身份验证 - 它实际上是在告诉你它需要一个证书或一组证书 在您的本地计算机上 并有一个 .conf
文件指向它们。
我创建了一个目录:C:\openldap\sysconf
(之前不存在)。
我在 C:\openldap\sysconf
ldap.conf
在 *nix 中,你可能会把它放在 /etc
或那里的子目录中,但我还没有测试过。
我找到了我们证书的 PEM 文件并将其解压缩到目录中(一个 PEM 文件基本上是一个文件中的整个证书链)。
在 ldap.conf
中,我添加了以下行:TLS_CACERT C:\openldap\sysconf\Certs.pem
如果您无法获得 PEM 证书,您可以使用 TLS_REQCERT never
代替。 这样做时要小心。这样做会让自己暴露在中间人的攻击之下。它不会验证端点。
一旦我这样做,我就成功绑定了。
如果这不起作用,请尝试将 ldap.conf
放入 C:\
(根级别);它似乎取决于您使用的 PHP 版本 - 它决定在不同的地方寻找 ldap.conf
.