2017-04-15 9 views
7

मैं कॉर्पोरेट नेटवर्क पर प्रमाणीकृत करने के लिए PHP adLDAP version 4.04 का उपयोग करने का प्रयास कर रहा हूं, अभी तक कोई सफलता नहीं है।php adLDAP त्रुटि - सर्वर से जुड़ने में असमर्थ: मजबूत (er) प्रमाणीकरण आवश्यक

PHP Version 5.2.4

मैं इस PHP ldap - Strong(er) authentication required, कोई भाग्य पोस्ट Stackoverflow की कोशिश की।

मैं इस डोमेन नियंत्रक पर एक व्यवस्थापक नहीं हूं; मुझे केवल क्वेरी करने में सक्षम होना चाहिए।

मैं HOSTNAMEOFDC.domain.location.company.com (मेरे डोमेन नियंत्रक के FQDN) पिंग करने

डोमेन नियंत्रक एक Windows Server 2012 R2 Standard है कर रहा हूँ।

मैं सफलतापूर्वक DsQuery और कोई समस्या नहीं के साथ PowerShell AD Module और कोई प्रमाणीकरण है कि मैं मैन्युअल रूप से टाइप करने के लिए किया था का उपयोग कर इस डोमेन नियंत्रक पूछे गए हैं।

मेरे कोड: जब मैं "use_ssl" => true" uncomment फिर

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 

मैं इस त्रुटि मिलती है:

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

मैं त्रुटि मिलती है

FYI करें, 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" uncommenting की कोशिश की है और मैं इस त्रुटि मिलती है:

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

एलडीएपी बाइंड rdn उपयोगकर्ता नाम के साथ नहीं किया जाता है, हालांकि सर्वर को उपयोगकर्ता नाम स्वीकार करने के लिए कॉन्फ़िगर किया जा सकता है। और अपने प्रोटोकॉल संस्करण को भी जांचें, कुछ को संस्करण 3 – frz3993

+0

@ frz3993 पर सेट करने की आवश्यकता होगी मेरे न्यूब-आर्य क्षमा करें, आरडीएन का उदाहरण क्या होगा? 'डोमन \ उपयोगकर्ता नाम 'की तरह? –

+0

डीएन के घटक की तरह अधिक 'uid = 12345, ou = people'। कुछ सर्वर डोमेन \ उपयोगकर्ता नाम की अनुमति देते हैं। लेकिन मुझे नहीं लगता कि यह समस्या – frz3993

उत्तर

4

इस उत्तर पीएचपी 5.2 -5.3 से संबंधित है, इस बग नए संस्करण (शायद) में तय किया गया है

annoyingly, जब पीएचपी वापस थूक त्रुटि सर्वर करने के लिए बाध्य करने में असमर्थ: सशक्त (ईआर) प्रमाणीकरण आवश्यक - यह वास्तव में आप कह रहा है कि यह एक प्रमाण पत्र या प्रमाण पत्र अपने स्थानीय मशीन पर के समूह की जरूरत है और एक .conf फाई है उन्हें इंगित करें।

मैंने एक निर्देशिका बनाई: C:\openldap\sysconf (यह पहले मौजूद नहीं था)।

मैं * nix में C:\openldap\sysconf

में फ़ाइल ldap.conf बनाया आप शायद वहाँ में /etc या एक subdir में रख सकता है, लेकिन मुझे लगता है कि अभी तक परीक्षण नहीं किया।

मैं गया और हमारे certs के लिए पीईएम फ़ाइल पाई और इसे निर्देशिका में निकाला (एक पीईएम फ़ाइल मूल रूप से एक फाइल में कर्ट की पूरी श्रृंखला है)। TLS_CACERT C:\openldap\sysconf\Certs.pem

आप पीईएम प्रमाणपत्र नहीं मिल सकता है, तो आप TLS_REQCERT never बजाय का उपयोग कर सकते हैं:

ldap.conf के भीतर मैं लाइन गयी। ऐसा करने पर सावधान रहें।आप इसे करने से मध्य हमले में एक आदमी को बेनकाब करते हैं। यह एंडपॉइंट को मान्य नहीं करेगा।

एक बार मैंने ऐसा किया, तो मैंने सफलतापूर्वक बाध्य किया।

यदि यह काम नहीं करता है, तो C:\ (रूट स्तर) में ldap.conf डालने का प्रयास करें; ऐसा लगता है कि आप किस PHP का उपयोग कर रहे हैं, इस पर निर्भर करता है - यह ldap.conf के लिए अलग-अलग स्थानों को देखने का निर्णय लेता है।

संबंधित मुद्दे