2017-04-15 34 views
7

Tôi đang cố sử dụng PHP adLDAP version 4.04 để xác thực trên mạng công ty mà không thành công.Php adLDAP Lỗi - Không thể liên kết với máy chủ: Yêu cầu xác thực mạnh (er)

PHP Version 5.2.4

Tôi cố gắng này Stackoverflow gửi PHP ldap - Strong(er) authentication required, không may mắn.

Tôi là NOT quản trị viên trên bộ điều khiển miền này; Tôi chỉ cần có khả năng truy vấn.

Tôi có thể ping HOSTNAMEOFDC.domain.location.company.com (FQDN của Domain Controller của tôi)

Domain controller là một Windows Server 2012 R2 Standard.

Tôi đã truy vấn thành công bộ điều khiển miền này bằng cách sử dụng DsQueryPowerShell AD Module không có vấn đề và không có xác thực mà tôi đã phải nhập theo cách thủ công.

Mã của tôi:

<?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(); 
?> 

tôi nhận được lỗi:

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 

Sau đó, khi tôi bỏ ghi chú "use_ssl" => true" tôi nhận được lỗi này:

FYI, ssl được nạp trong tôi 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 

Tôi cũng đã thử uncommenting "use_tls" => true" và tôi nhận được lỗi này:

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 
+0

Ràng buộc Ldap được thực hiện với tên người dùng không phải là rdn, mặc dù máy chủ có thể được định cấu hình để chấp nhận tên người dùng. Và kiểm tra phiên bản giao thức của bạn quá, một số sẽ cần phải được thiết lập để phiên bản 3 – frz3993

+0

@ frz3993 Xin lỗi newb-ary của tôi, những gì sẽ là một ví dụ RDN? Giống như 'Doman \ username'? –

+0

Giống như một thành phần của DN như 'uid = 12345, ou = people'. Một số máy chủ cho phép tên miền \ tên người dùng. Nhưng tôi không nghĩ rằng đây là vấn đề – frz3993

Trả lời

4

Câu trả lời này được gắn liền với PHP 5.2 -5,3, lỗi này đã được cố định trong các phiên bản mới hơn (có lẽ)

Khó chịu, khi PHP quay trở lại lỗi Không thể liên kết với máy chủ: Yêu cầu xác thực mạnh mẽ (er) - thực tế là bạn cần chứng chỉ hoặc nhóm chứng chỉ TRÊN MÁY ĐỊA PHƯƠNG CỦA BẠN và có .conf fi le chỉ cho họ.

Tôi đã tạo một thư mục: C:\openldap\sysconf (nó không tồn tại trước đó).

tôi đã thực hiện các tập tin ldap.conf trong C:\openldap\sysconf

Trong * nix có thể bạn sẽ đặt nó trong /etc hoặc một subdir trong đó, nhưng tôi đã không kiểm tra đó được nêu ra.

Tôi đã đi và tìm thấy tệp PEM cho các chứng chỉ của chúng tôi và trích xuất nó trong thư mục (tệp PEM về cơ bản là toàn bộ chuỗi certs trong một tệp).

Trong ldap.conf tôi đã thêm dòng: TLS_CACERT C:\openldap\sysconf\Certs.pem

Nếu bạn không thể có được Certs PEM, bạn có thể sử dụng TLS_REQCERT never để thay thế. Hãy cẩn thận khi thực hiện việc này.Bạn vạch trần bản thân với một người đàn ông trong cuộc tấn công ở giữa bằng cách làm điều này. Nó sẽ không xác nhận điểm cuối.

Khi tôi đã thực hiện việc này, tôi đã liên kết thành công.

Nếu cách đó không hiệu quả, hãy thử đặt ldap.conf vào C:\ (cấp độ gốc); nó dường như phụ thuộc vào phiên bản PHP bạn đang sử dụng - nó quyết định tìm kiếm ở các vị trí khác nhau cho ldap.conf.

Các vấn đề liên quan