शुभ दिन।पायथन + एलडीएपी + एसएसएल
अग्रिम में मेरी अंग्रेजी के लिए माफ़ी मांगने के लिए, मेरे राष्ट्रीय मंच और संसाधनों ने मदद नहीं की।
लिपि में एक आवश्यकता थी जो एडी में उपयोगकर्ता पासवर्ड को बदलता है (या बनाता है)।
मुद्दे का अध्ययन करने के बाद, यह स्पष्ट है कि बन गया
- पासवर्ड आवंटित करने के लिए या परिवर्तन केवल सर्वर
- पासवर्ड भेजने के लिए एक एन्क्रिप्टेड संबंध स्थापित कर सकते एनकोडिंग utf-16-le में केवल आवश्यक है
सामान्य तौर पर दूसरे के साथ कोई समस्या नहीं है, लेकिन पहले से एक समस्या है
$ python ldap-test-starttls.py
Traceback (most recent call last):
File "ldap-test-starttls.py", line 9, in <module>
l.simple_bind_s("cn=admin,ou=users,dc=test,dc=ru", "password")
File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 206, in simple_bind_s
msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 200, in simple_bind
return self._ldap_call(self._l.simple_bind,who,cred,EncodeControlTuples(serverctrls),EncodeControlTuples(clientctrls))
File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 96, in _ldap_call
result = func(*args,**kwargs)
ldap.SERVER_DOWN: {'info': 'A TLS packet with unexpected length was received.', 'desc': "Can't contact LDAP server"}
स्क्रिप्ट कोड
import ldap
host = 'ldaps://ldap:636'
l = ldap.initialize(host)
l.set_option(ldap.OPT_X_TLS_DEMAND, True)
l.set_option(ldap.OPT_DEBUG_LEVEL, 255)
username = 'someUser'
new_pass = 'ne$wP4assw0rd3!'
new_password = ('"%s"' % new_pass).encode("utf-16-le")
l.simple_bind_s("cn=admin,ou=users,dc=test,dc=ru", "password")
mod_attrs = [(ldap.MOD_REPLACE, 'unicodePwd', new_password)],[(ldap.MOD_REPLACE, 'unicodePwd', new_password)]
l.modify_s('CN=%s,dc=users,dc=test,dc=ru' % username, mod_attrs)
l.unbind_s()
print "Successfully changed password."
संभावना है किसी को पहले से ही एक ऐसी ही समस्या हल हो गई है। हां, स्क्रिप्ट Centos पर चल रही है और संभव नहीं py32win का उपयोग करें।
अग्रिम धन्यवाद।
पहली पंक्ति पर एक समाधान पाया है कि यह मेरे लिए किया था। मुझे नहीं पता कि दूसरों के लिए बाकी कितना जरूरी है। ऐसा लगता है कि ** ** टीएलएस को असंगत करना आवश्यक है ताकि आप वास्तव में एसएसएल का उपयोग कर सकें। (यदि वह वही है जो आप चाहते थे) – SpiRail
हाय मैंने आपके उत्तर के साथ प्रयास किया लेकिन कोई भाग्य नहीं। मैंने अपना प्रश्न पोस्ट किया है http://stackoverflow.com/questions/38603236/update-active-directory-password-using-ldap-python अगर आप मदद कर सकते हैं –