Python 3.5、ldap3 和 modify_password()

2022-01-17 00:00:00 python python-3.5 ldap ldap3

问题描述

我一直在努力尝试通过脚本发送更新我自己的密码的请求.这是代码:

I've been pulling my hair out trying to send a request to update my own password via a script. here is the code:

#!/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','推荐':无,'结果':53,'消息':'00002077: SvcErr: DSID-03190E44, 问题 5003 (WILL_NOT_PERFORM),数据 0 x00'}

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

知道我做错了什么吗?

我拥有对 DC 的完全访问权限,并且我已确保密码正确等.我已阅读所有文档,但无法理解它.

I have full access to the DC and I've made sure that the passwords are correct etc. I've read all the docs and just can't get my head around it.

任何帮助都会很棒!


解决方案

好的,谢谢大家的帮助,还有github上的开发者.

OK thank you to everyone for your help, and the developers on github.

最后我用来完成这项工作的代码是......

the code i used to make this work in the end was...

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)

我想我会发布可行的解决方案,因为互联网上似乎没有任何解决方案!上帝会加速我的同胞开发人员.

Thought i'd post the working solution as there doesn't seem to be any on the internets!! God speed my fellow devops people.

相关文章