5

我想更改 ldap 用户的密码。脚本是:

def changePassword(url,binddn,pw, newpw):
l = ldap.initialize(url)
ldap.
try:
    l.protocol_version=ldap.VERSION3
    l.simple_bind_s(binddn,pw)
except:
    print "Error Bind in changePassword"
    sys.exit(0)

old = {'userPassword':pw}
new = {'userPassword':newpw}
ldif = modlist.modifyModlist(old,new)
try:
    l.modify_s(binddn,ldif)
    l.unbind_s()
except:
    print "error"

但是当我调用这个函数时,我收到“错误”。当我更改密码时,我的 LDAP 具有要求当前密码的 PPolicy。

如何使用此 PPolicy 更改密码?

谁能帮我??

在此先感谢达里奥

4

2 回答 2

1

对于 LDAPv3 服务器,您通常不应直接修改/替换用户密码,而应使用 LDAPv3 密码修改操作。使用 python-ldap,这是通过 passwd/passwd_s 完成的。例如:

import ldap
server = 'localhost'
l = ldap.initialize('ldap://%s' % server)
l.simple_bind_s("cn=Marice McCaugherty,ou=Product Testing,dc=example,dc=com", "ytrehguaCc")
l.passwd_s("cn=Marice McCaugherty,ou=Product Testing,dc=example,dc=com", "ytrehguaCc", "secret")

将绑定为列出的用户 DN,并将其密码从“ytrehguaCc”更改为“secret”。

于 2019-05-29T18:16:00.240 回答
0

也许您必须直接在 modify_s 中使用以下 modlist [(ldap.MOD_REPLACE, 'userPassword', [newpasswd] )]

于 2017-07-25T16:44:49.873 回答