加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何使用Python更改域用户(Windows Active Directory)的密码?

发布时间:2020-12-20 13:39:15 所属栏目:Python 来源:网络整理
导读:如何使用 Python更改域用户的密码?我有ldap模块,但没有解决方案.我设法通过ldap查询当前设置,但如何修改它? import ldapimport syshost = 'ldap://10.172.0.79'con = ldap.initialize(host)BIND_DN = "administrator@biztalk.com"BIND_PASS = "a-123456"co
如何使用 Python更改域用户的密码?我有ldap模块,但没有解决方案.我设法通过ldap查询当前设置,但如何修改它?

import ldap
import sys

host = 'ldap://10.172.0.79'

con = ldap.initialize(host)
BIND_DN = "administrator@biztalk.com"
BIND_PASS = "a-123456"
con.set_option( ldap.OPT_X_TLS_DEMAND,True )
con.set_option( ldap.OPT_DEBUG_LEVEL,255 )

PASSWORD_ATTR = "unicodePwd"
username="bizadmin"
user_dn = "CN=%s,OU=User,OU=biztalk,DC=biz-talk,DC=com" % username
password = 'New12345'

# Set AD password
unicode_pass = unicode(""" + password + ""","iso-8859-1")
password_value = unicode_pass.encode("utf-16-le")
add_pass = [(ldap.MOD_REPLACE,PASSWORD_ATTR,[password_value])]

# Replace password
try:
    con.modify_s(user_dn,add_pass)
    print "Active Directory password for",username,"was set successfully!"
except ldap.LDAPError,e:
    sys.stderr.write('Error setting AD password for: ' + username + 'n')
    sys.stderr.write('Message: ' + str(e) + 'n')
    sys.exit(1)

错误

pydev调试器:启动

设置AD密码时出错:bizadmin

消息:{‘desc’:“无法联系LDAP服务器”}

Python更改域(Microsoft Active Directory)用户的密码.

…需要python和域之间的认证服务?

你有什么好方法可以解决它吗?

谢谢!

解决方法

Python不是我的语言,但是我通过LDAP更改Active-Directory密码.

就您的URL而言:

您的LDAP网址应如下所示:

host = 'LDAP://10.172.0.79/dc=directory,dc=example,dc=com'

使用’LDAP’而不是’ldap’和后面的好目录路径.

就密码而言:

第一:据我所知,只有当服务器有证书并且通过LDAPS(SSL)联系时,才能更改AD密码unicode_pass.

第二:密码是双qote密码test.2006变为“test.2006”.

第三:resutl必须以unicode编码.

编辑:

安装证书服务器后,只需重新启动服务器即可让AD等待端口636(LDAPS).在Python方面,这是我发现的:

ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT,ldap.OPT_X_TLS_NEVER)
l = ldap.initialize("LDAPS://10.172.0.79:636")
l.set_option(ldap.OPT_REFERRALS,0)
l.set_option(ldap.OPT_PROTOCOL_VERSION,3)
l.set_option(ldap.OPT_X_TLS,ldap.OPT_X_TLS_DEMAND)
l.set_option( ldap.OPT_X_TLS_DEMAND,True )
l.set_option( ldap.OPT_DEBUG_LEVEL,255 )
l.simple_bind_s("admin@tester.com","password")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读