【发布时间】:2019-03-13 14:38:22
【问题描述】:
我目前正在尝试使用 Python (3) 和 LDAP 模块修改 AD 上的用户密码。 当我的脚本完成后,一切看起来都很好。 不过密码和之前一样。
这是我的脚本:
LDAP_SERVER = <domain>
LDAP_USERNAME = <admin_username>
LDAP_PASSWORD = <admin_password>
dn = <DN>
quoted_new_password = '\"' + <new_password> + '\"'
quoted_new_password_bytes = quoted_new_password.encode('UTF-16LE')
ldap_client = ldap.initialize(LDAP_SERVER)
ldap_client.set_option(ldap.OPT_REFERRALS, 0)
ldap_client.simple_bind_s(LDAP_USERNAME, LDAP_PASSWORD)
ad_user_filter = '(&(objectClass=user)(sAMAccountName=<username-for-password-modification>))'
res = ldap_client.search_s(dn, ldap.SCOPE_SUBTREE, ad_user_filter)
user_dn = (res[0][1]['distinguishedName'][0]).decode("utf-8")
modlist = [ (ldap.MOD_REPLACE, "userPassword", quoted_new_password_bytes)]
ldap_client.modify_s(user_dn, modlist)
结果是一个像这样的元组
(<number>, [], <number>, [])
然后,当我尝试连接 AD(具有相同域)时,旧密码有效,但新密码无效。
我是不是忘记了什么?
提前谢谢你!
编辑:例如,当我将空字符串作为新密码时,结果是相同的,即使我的 AD 至少需要 14 个字符。
编辑:“modify_s”的最后结果是
(103, [], 3, [])
但是,103 代码不对应任何东西...
【问题讨论】:
-
您应该检查 ldapmodify 操作的结果。很可能是被拒绝了。请注意,如果连接不安全 (TLS),AD 可能不允许您更改密码。
-
感谢 Ludovic Poitou,您的评论帮助我引导自己走上正确的道路。事实上,我尝试的服务器并不安全。
-
103 或 3 代码“对应”于 LDAP RFC 中记录的错误代码之一。
标签: python python-3.x ldap passwords