我似乎遇到了在 AD 中重置密码的经典错误,尽管我在网上找到的所有内容都普遍指向我应该是黄金的事实。
先上代码。
from ldap3 import *
username = '<account with the proper permissions>'
password = '<totally@realpassword>'
server = Server('<fqdn of server>', use_ssl=True, get_info=ALL)
conn = Connection(server, user='<domain>\\' + username, password=password, authentication=NTLM, auto_bind=True)
print(conn)
user_dn = 'CN=Test,OU=US,OU=NA,OU=Employees,OU=Users,DC=domain,DC=com'
new_pass = 'U^mod2olla'
r = conn.extend.microsoft.modify_password(user_dn, new_pass)
print(conn.result)
这似乎是通过 SSL 实例化与我的 LDAP 服务器的连接的正确方法,此连接打印输出证实了这一点:
ldaps://ldap.domain.com:636 - ssl - user: domain.com\samaccountname - not lazy - bound - open - <local: IP:62368 - remote: IP:636> - tls not started - listening - SyncStrategy - internal decoder
但我仍然收到此错误:
{'result': 53, 'description': 'unwillingToPerform', 'dn': '', 'message': '0000001F: SvcErr: DSID-031A1248, problem 5003 (WILL_NOT_PERFORM), data 0\n\x00', 'referrals': None, 'type': 'modifyResponse'}
根据我的谷歌搜索,这通常意味着密码没有正确编码,或者连接根据 LDAP 服务器不够安全。
我在这一点上迷路了。想法?
@cannatag 如果你在外面……我需要你 :)
我的研究链接:
https://github.com/cannatag/ldap3/issues/130