> -----Original Message-----
> From: Michael Ströder [mailto:mich...@stroeder.com]
> Sent: 05 August 2009 16:11
> To: Mike Peters
> Cc: python-ldap-dev@lists.sourceforge.net
> Subject: Re: ldap.passwd_s with Active Direcory
> 
> mike.pet...@opengi.co.uk wrote:
> > Michael Ströder wrote:
> >> Did you search for the MSDN article? The value has to be in your
> case
> >> above:
> >>
> >> '"password"'.encode('utf-16-le')
> >>
> >> Note the quotes and the UTF-16 low-endian encoding.
> >
> > Thanks again for your help. I tried that but to no avail. I still get
> the
> > same error.
> 
> It should work. It's the way I've implemented it in web2ldap. You must
> use
> either LDAPS or StartTLS ext.op.
> 
> You might wanna look what's going on by setting trace_level=2 when
> calling
> ldap.initialize().
> 

With trace_level=2 I get the following:

In [1]: import ldap

In [2]: l = ldap.initialize("ldaps://ad01.demo.local:636", trace_level=2)
*** ldaps://ad01.demo.local:636 - SimpleLDAPObject.set_option ((17, 3),{})

In [3]: l.simple_bind_s(u'u...@addemo', u'secret')
*** ldaps://ad01.demo.local:636 - SimpleLDAPObject.simple_bind 
((u'u...@addemo', u'secret', None, None),{})
=> result: 1
*** ldaps://ad01.demo.local:636 - SimpleLDAPObject.result3 ((1, 1, -1),{})
=> result: (97, [], 1, [])
Out[3]: (97, [])

In [4]: mod_attrs = [( ldap.MOD_REPLACE, 'unicodePwd', 
'"password"'.encode('utf-16-le') )]
In [5]: dn = 'CN=Barney Rubble,OU=Users,OU=ADDEMO,DC=demo,DC=local'

In [6]: r = l.modify_s(dn, mod_attrs)*** ldaps://ad01.demo.local:636 - 
SimpleLDAPObject.modify_ext (('CN=Barney 
Rubble,OU=Users,OU=ADDEMO,DC=demo,DC=local', [(2, 'unicodePwd', 
'"\x00p\x00a\x00s\x00s\x00w\x00o\x00r\x00d\x00"\x00')], None, None),{})
=> result: 2
*** ldaps://ad01.demo.local:636 - SimpleLDAPObject.result3 ((2, 1, -1),{})
=> LDAPError - UNWILLING_TO_PERFORM: {'info': '0000052D: SvcErr: DSID-031A0FC0, 
problem 5003 (WILL_NOT_PERFORM), data 0\n', 'desc': 'Server is unwilling to 
perform'}
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (134, 0))

---------------------------------------------------------------------------
UNWILLING_TO_PERFORM                      Traceback (most recent call last)

/home/django/pplace/<ipython console> in <module>()

/usr/lib/python2.5/site-packages/ldap/ldapobject.pyc in modify_s(self, dn, 
modlist)
    326   def modify_s(self,dn,modlist):
    327     msgid = self.modify(dn,modlist)
--> 328     return self.result(msgid,all=1,timeout=self.timeout)
    329 
    330   def modrdn(self,dn,newrdn,delold=1):

/usr/lib/python2.5/site-packages/ldap/ldapobject.pyc in result(self, msgid, 
all, timeout)
    426         polling (timeout = 0), in which case (None, None) is returned.
    427     """
--> 428     res_type,res_data,res_msgid = self.result2(msgid,all,timeout)
    429     return res_type,res_data
    430 

/usr/lib/python2.5/site-packages/ldap/ldapobject.pyc in result2(self, msgid, 
all, timeout)
    430 
    431   def result2(self,msgid=_ldap.RES_ANY,all=1,timeout=None):
--> 432     res_type, res_data, res_msgid, srv_ctrls = 
self.result3(msgid,all,timeout)
    433     return res_type, res_data, res_msgid
    434 

/usr/lib/python2.5/site-packages/ldap/ldapobject.pyc in result3(self, msgid, 
all, timeout)
    436     if timeout is None:
    437       timeout = self.timeout
--> 438     ldap_result = self._ldap_call(self._l.result3,msgid,all,timeout)
    439     if ldap_result is None:
    440       rtype, rdata, rmsgid, decoded_serverctrls = (None,None,None,None)

/usr/lib/python2.5/site-packages/ldap/ldapobject.pyc in _ldap_call(self, func, 
*args, **kwargs)
     94     try:
     95       try:
---> 96         result = func(*args,**kwargs)
     97       finally:
     98         self._ldap_object_lock.release()

UNWILLING_TO_PERFORM: {'info': '0000052D: SvcErr: DSID-031A0FC0, problem 5003 
(WILL_NOT_PERFORM), data 0\n', 'desc': 'Server is unwilling to perform'}

Does the encoded password look right?

Thanks

Mike Peters

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Python-LDAP-dev mailing list
Python-LDAP-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/python-ldap-dev

Reply via email to