python ldap3扩展,microsoft,修改密码不断返回假

2mbi3lxu  于 2022-12-17  发布在  Python
关注(0)|答案(2)|浏览(174)

我尝试在中修改用户帐户密码,但它不起作用,我直接在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。
你知道为什么吗?谢谢。

dly7yett

dly7yett1#

根据这个
我查看了源代码,它显示旧密码必须为“无”,才能重置具有足够权限的密码
这应该行得通:

c.extend.microsoft.modify_password(USER_DN, 'Formation123', old_password=None)

连接必须加密,即使指定了use_ssl,您也必须指定ldaps://,因为LDAPS端口(636)与常规LDAP端口(389)不同。

s = Server("ldaps://192.168.x.xx", use_ssl=True)
s5a0g9ez

s5a0g9ez2#

解决办法是在我的LDAP上设置SSL,它起作用了。

相关问题