Python LDAP修改密码

Python LDAP修改密码,python,passwords,ldap,Python,Passwords,Ldap,我有一个Windows 2012 R2服务器和一个LDAP服务器。我编写了一个python脚本来修改用户的密码(不是管理员的用户想要修改的是自己的密码。我还有一个函数,当你是管理员时可以修改密码,但我不想设置密码,而是修改它)。这是我的代码示例: ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) ld = ldap.initialize('ldaps://XXX:636') ld.simple_bind_s('X

我有一个Windows 2012 R2服务器和一个LDAP服务器。我编写了一个python脚本来修改用户的密码(不是管理员的用户想要修改的是自己的密码。我还有一个函数,当你是管理员时可以修改密码,但我不想设置密码,而是修改它)。这是我的代码示例:

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
ld = ldap.initialize('ldaps://XXX:636')
ld.simple_bind_s('XXXXXXXX@ad2012.local', 'ZZZZZ')

new = {'unicodePwd':[str('"YYYYY"').decode('utf8').encode('utf-16-le')]}
old = {'unicodePwd':[str('"ZZZZZ"').decode('utf8').encode('utf-16-le')]}

ldif = modlist.modifyModlist(old, new)
ld.modify_s('A DN',ldif)
但是当我运行它时,我有一个错误(在最后一行):

{'info':'00000056:ATERRR:DSID-03191083,#1:\n\t0:00000056:DSID-03191083,问题1005(约束类型),数据0,ATT 9005a(UnicodeWD)\n','desc':'约束冲突'}

我检查了错误:

“指定的网络密码不正确。”

但是,我使用相同的密码连接到用户以进行更改。 我试过用双引号,用utf-8,输入一个非常糟糕的旧密码。。。但是没有什么改变,我总是有同样的错误


如果有人能帮助我,请提前感谢。

我实现了更改密码,下面是代码:

#!/usr/bin/env python
#coding:utf-8

import ldap
import ldap.modlist as modlist

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
ld = ldap.initialize('ldaps://XXX:636')
ld.simple_bind_s('XXX@ad2012.local', 'XXX')

newpassword = 'YYY'
oldpassword = 'ZZZ'
newpassword = unicode('\"' + newpassword + '\"').encode('utf-16-le')
oldpassword = unicode('\"' + oldpassword + '\"').encode('utf-16-le')
pass_mod = [(ldap.MOD_DELETE, 'unicodePwd', [oldpassword]), (ldap.MOD_ADD, 'unicodePwd', [newpassword])]
result = ld.modify_s('A DN', pass_mod)
我希望它能帮助别人D