我尝试在中修改用户帐户密码,但它不起作用,我直接在AD中尝试过,它起作用了。我使用ldap3来做这件事,下面是我做的步骤。
首先我这样做应用程序操作
from ldap3 import Server, Connection, ALL
s = Server("ldap://192.168.x.xx", use_ssl=True)
c = Connection(s, user='adminldap', password='xxxxxxx')
c.bind()
c.add('cn=jtest,ou=users,ou=MJC,dc=mjc,dc=lan', ['user', 'posixGroup', 'top'], {'cn': 'jtest', 'sAMAccountName':'jtest', 'mail':'jtest@gmail.com','telephoneNumber':'0102030405','displayName':'jtest'})
这个管用。
然后我试着设置密码
Path_Root = "ou=users,ou=MJC,DC=mjc,DC=lan"
Filter = "(&(objectclass=user)(&(sAMAccountName=jtest)(!(objectclass=computer))))"
c.search(search_base = Path_Root,search_filter = Filter,attributes = ["cn", "sAMAccountName", "displayName"])
if len(c.entries) == 1:
USER_DN = c.response[0].get("dn")
c.extend.microsoft.modify_password(USER_DN, 'Formation123')
就像这样但是最后一行总是返回False。
你知道为什么吗?谢谢。
2条答案
按热度按时间dly7yett1#
根据这个
我查看了源代码,它显示旧密码必须为“无”,才能重置具有足够权限的密码
这应该行得通:
连接必须加密,即使指定了
use_ssl
,您也必须指定ldaps://
,因为LDAPS端口(636)与常规LDAP端口(389)不同。s5a0g9ez2#
解决办法是在我的LDAP上设置SSL,它起作用了。