Ошибка Php adLDAP-невозможно привязать к серверу: требуется сильная (er) аутентификация

Я пытаюсь использовать PHP adLDAP версии 4.04 для аутентификации в корпоративной сети без успеха пока.

PHP Version 5.2.4

Я пробовал этот пост stackoverflow PHP ldap-требуется сильная (er) аутентификация, не повезло.

Я не администратор на этом контроллере домена; мне нужно только иметь возможность запрашивать.

Я могу пинговать 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 = "domainusername"; // 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:xampphtdocsWorkspaceProjectscriptsincludesphpadLDAPsrcadLDAP.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:xampphtdocsWorkspaceProjectscriptsincludesphpadLDAPsrcadLDAP.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:xampphtdocsWorkspaceProjectscriptsincludesphpadLDAPsrcadLDAP.php on line 638

Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Can't contact LDAP server in C:xampphtdocsWorkspaceProjectscriptsincludesphpadLDAPsrcadLDAP.php on line 712
Can't contact LDAP server
User authentication unsuccessful

1 ответов


этот ответ имеет отношение к PHP 5.2 -5.3, эта ошибка была исправлена в более новых версиях (наверное)

досадно, когда PHP выплевывает ошибку невозможно привязать к серверу: требуется сильная(er) аутентификация - это на самом деле говорит вам, что ему нужен сертификат или группу сертификатов НА ВАШЕМ ЛОКАЛЬНОМ КОМПЬЮТЕРЕ и .conf файл указывает на них.

Я создал директорию: C:\openldap\sysconf (он не существовал предварительный.)

Я сделал файл ldap.conf на C:\openldap\sysconf

в *nix вы, вероятно, поместите его в /etc или каталогом, но я не проверял, что еще.

Я пошел и нашел файл PEM для наших сертификатов и извлек его в каталоге (файл PEM-это в основном вся цепочка сертификатов в одном файле).

внутри ldap.conf я добавил строку: TLS_CACERT C:\openldap\sysconf\Certs.pem

если вы не можете получить сертификаты PEM, вы можете использовать TLS_REQCERT never вместо. будьте осторожны при этом. Вы подвергаете себя человек в середине атаки, делая это. Он не будет проверять конечную точку.

как только я это сделал, я успешно связался.

если это не работает, попробуйте положить ldap.conf на C:\ (корневой уровень); похоже, это зависит от того, какую версию PHP вы используете - он решает искать в разных местах для ldap.conf.