Python3.5、ldap3和modify_password()

2024-10-01 15:33:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在努力通过脚本发送更新自己密码的请求。代码如下:

#!/usr/bin/python3.5

from ldap3 import Server, Connection, NTLM, ALL

server = Server('ldap://192.168.0.80', use_ssl=True)

conn = Connection(server, user="local\\dctest", password="Pa55word1", authentication=NTLM, auto_bind=True)

dn = "CN=dctest,CN=Users,DC=home,DC=local"

conn.extend.microsoft.modify_password(dn, new_password="Pa55word2", old_password="Pa55word1")

我得到的错误是:

{'dn': '', 'type': 'modifyResponse', 'description': 'unwillingToPerform', 'referrals': None, 'result': 53, 'message': '00002077: SvcErr: DSID-03190E44, problem 5003 (WILL_NOT_PERFORM), data 0\n\x00'}

你知道我做错什么了吗?在

我可以完全访问DC,并且我已经确保密码是正确的等等。我已经阅读了所有的文档,只是无法理解它。在

任何帮助都太好了!在


Tags: 脚本true密码serverlocalpasswordconnectiondc
3条回答

好的,感谢大家的帮助,以及github上的开发人员。在

我最后用的代码是。。。在

from ldap3 import Server, Connection

server = Server('ldaps://<AD server address>', use_ssl=True)
conn = Connection(server, user="<domain>\\<username>", password="<current password>", auto_bind=True)

dn = 'CN=<username>,OU=Users,DC=<dominaname>'

res = conn.extend.microsoft.modify_password(dn, old_password='<current password>', new_password='<new password>')
print(res)

我想我会张贴的工作解决方案,因为似乎没有任何在互联网上!!上帝保佑我的同胞们。在

尝试使用ldaps://而不是ldap://。或者根本不使用该方案,并在服务器定义中传递use_ssl=True。AD连接必须使用ssl修改密码。在

ldap3.modify_password()从0.9.4.2版起不适用于Active Directory,因为它使用了AD不支持的密码修改扩展操作。MS似乎找到了一个way to do things different with AD。ldap3作者(cannatag)意识到了这一点,并在不久之后添加了ad_modify_password()。你必须使用新版本的ldap3。在

相关问题 更多 >

    热门问题