2012-05-26 12 views
5

प्रदर्शन करने के लिए तैयार नहीं है:ldap_mod_replace() [function.ldap-आधुनिक-बदलें]: संशोधित करें: सर्वर में कोई त्रुटि हो रही

Server is unwilling to perform

पीएचपी के माध्यम से ईस्वी में unicodePwd बदलते समय। हालांकि, मैं उपयोगकर्ताओं के किसी भी विशेषताओं को खोजने, जोड़ने, हटाने और संशोधित करने में सक्षम हूं।

प्रशासक खाते का उपयोग करने के लिए बाध्य करने और व्यवस्थापक को किसी भी उपयोगकर्ता के पासवर्ड बदलने का पूरा अधिकार है।

यहाँ कोड मैं का उपयोग कर रहा है:

<?php 
$dn = "CN=Vishal Makwana,OU=Address Book,DC=example,DC=com"; 
$ad = ldap_connect("ldap://example.com") 
     or die("Couldn't connect to AD!"); 
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3); 
$bd = ldap_bind($ad,"[email protected]","admin1"); 

    if($bd) { 
     echo "AD bind successfully"; 
     } 
    else { 
     echo "Couldn't bind AD";; 
    } 

$user["unicodePwd"] = "asdf1234"; 

$result = ldap_mod_replace($ad, $dn, $user); 
if ($result) echo "User modified!"; else 
      echo "There was a problem!"; 

ldap_unbind($ad); 
?> 

उत्तर

9

चीजें आप वास्तव में LDAP के माध्यम से ई में एक पासवर्ड सेट करने के लिए सही प्राप्त करने की आवश्यकता के एक नंबर रहे हैं।

  • पासवर्ड उद्धरण

  • (उद्धृत) पासवर्ड 16- में एनकोड करने की आवश्यकता में संलग्न करने की आवश्यकता है:

    • आप एक SSL कनेक्शन (// ldaps) का उपयोग करने की जरूरत है बिट यूनिकोड (UTF-16LE)

    पासवर्ड आप स्थापित करने के लिए कोशिश कर रहे हैं मान लिया जाये कि साधारण ASCII वर्ण है, यूनिकोड रूपांतरण एक \ 000 बाइट जोड़कर पूरा किया जा सकता this code sample में दिखाए गए अनुसार, एसीआई स्ट्रिंग के प्रत्येक बाइट के बाद।

    तो अपने उदाहरण के बजाय देखने की तरह होगा:

    $newpassword = "asdf1234"; 
    $newpassword = "\"" . $newpassword . "\""; 
    $len = strlen($newpassword); 
    for ($i = 0; $i < $len; $i++) $newpass .= "{$newpassword{$i}}\000"; 
    $user["unicodePwd"] = $newpass; 
    
  • +0

    धन्यवाद बहुत डेविड, लेकिन मैं थोड़ा उलझन में हूं। जब मैंने SSL कनेक्शन का उपयोग करने का प्रयास किया, (ldaps: //) यह एडी के साथ भी बाध्य नहीं होता है। मेरा मतलब है, क्या मुझे अपाचे या PHP में SSL समर्थन सक्षम करने के लिए कुछ करने की आवश्यकता है? यदि हां, तो मैं यह कैसे कर सकता हूं। –

    +0

    "{$ newpassword {$ i}} \ 000" {$ newpassword [$ i]} \ 000 "यानी घुंघराले के बजाय वर्ग ब्रैकेट नहीं होना चाहिए? – redreinard

    2

    एक बहुत खोज और बहुत समय खर्च करने के बाद, मैं अंत में LDAP लाइब्रेरी का उपयोग कर PHP कोड से सक्रिय निर्देशिका उपयोगकर्ता पासवर्ड को संशोधित करने में सक्षम हूँ।

    हमें PHP कोड से सक्रिय निर्देशिका सर्वर के साथ एलडीएपी कनेक्शन की आवश्यकता है; और आपको unicodePwd फ़ील्ड को संशोधित करना होगा।

    ldap_connect(ldaps://IP, 636); 
    ldap_connect(ldaps://IP, 389); 
    
    +0

    मुझे अपना प्रमाणपत्र स्थापित करने के बाद मैंने सोचा कि यह मेरी समस्या थी, लेकिन आपने जो लिखा है उसे पढ़ने के बाद, मैं "यूनिकोड पीडब्ल्यूडी" के बजाय "उपयोगकर्ता पासवर्ड" का उपयोग कर रहा था। धन्यवाद। – geekinit