我正在使用 Python ldap3[1] 构建一个 API,允许用户使用他们当前的凭据更改他们的 Microsoft Active Directory 密码。这就是我的 API 正在做的事情:
1- 创建 LDAP 连接并绑定到 LDAP 服务器:
tls_config = Tls(validate=ssl.CERT_NONE)
server = Server(ldaps_endpoint, port = 636, use_ssl = True, tls = tls_config)
connection = Connection(server, user=username, password=password, authentication='NTLM')
connection.bind()
2- 使用extend.microsoft.modifyPassword.ad_modify_password()
ldap3 函数更改密码:
user_modified = extend.microsoft.modifyPassword.ad_modify_password(connection, user_dn, new_password, current_password)
当未设置下次登录时的用户标志更改密码时,这可以正常工作。设置后,它不起作用,因为连接失败bind()
。我尝试使用ANONYMOUS
连接而不是NTLM
成功绑定。但是,该ad_modify_password()
功能失败:
为了执行此操作,必须在连接上完成成功的绑定
应该如何在下一个登录标志上ad_modify_password()
使用更改密码?