python LDAP修改密码

时间:2016-06-03 16:10:08

标签: python passwords ldap

我有一台Windows 2012 R2服务器和一台LDAP服务器。我写了一个python脚本来修改用户的密码(用户,谁不是管理员,想要修改自己的密码。我还有一个其他功能,当你管理时修改密码,但我不知道#39; t想要设置密码,但要修改它。这是我的代码示例:

#!/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.xxx.xxx.xxx:636')
ld.simple_bind_s('XXXXXX@ad2012.local', 'XXXXXXX')

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

ldif = modlist.modifyModlist(old, new)
ld.modify_s('A DN',ldif)

但是当我运行它时,我有一个错误:

  

ldap.CONSTRAINT_VIOLATION:{' info':' 0000052D:AtrErr:DSID-03191083,#1:\ n \ t0:0000052D:DSID-03191083,问题1005(CONSTRAINT_ATT_TYPE),数据0,Att 9005a(unicodePwd)\ n',' desc':'约束违规'}

我试过解码/编码或没有。 passwd_s()也没有工作。 我在谷歌搜索了很多,我为其他人找到了很多解决方案,但不适合我。

如果有人可以帮助我,请提前谢谢。

1 个答案:

答案 0 :(得分:2)

您要关注的错误消息部分是'info': '0000052D。十六进制值0000052D转换为十进制1325的系统错误代码。该错误代码记录为here

  

ERROR_PASSWORD_RESTRICTION

     

1325(0x52D)

     

无法更新密码。为新密码提供的值不符合长度,复杂性或历史记录要求   域名。

因此,您尝试设置的新密码似乎违反了分配给用户的密码策略。