一、环境准备:
系统:windows server 2012 r2标准版,添加Active Directionry域服务,DNS服务器,Active Directionary证书服务(证书颁发机构和证书颁发机构web注册,注意安装后需要配置,如下图),更改用户密码需要建立安全连接(ssl)需要Active Directionary证书服务
python版本:3.7,安装ldap3(pip install ldap3)
二、连接服务器
from ldap3 import Server, Connection, ALL
# host为域控服务器ip
server = Server(host, use_ssl=True, get_info=ALL)
# user(如domain\Administrator)和passwod为登录域控服务器的账户密码
conn = Connection(server, 'user', 'password', auto_bind=True)
三、查找对象
res = conn.search('dc=dctest,dc=com', '(objectclass=user)', attributes=['objectclass'])
print(res) # search是否成功(True,False)
print(conn.result) # 查询失败的原因
print(conn.entries) #查询到的数据
四、添加对象
# 添加一个组织
res = conn.add('OU=domainusers,dc=dctest,dc=com', object_class='OrganizationalUnit')
print(res)
print(conn.result)
# 向组织domainusers中添加一个用户
res = conn.add('CN=domainuser1,OU=domainusers,dc=dctest,dc=com', object_class='user',
attributes={'displayName':'domainuser1',...})
#attributes支持的字段可以通过server.schema.object_classes['user']获取
print(res)
print(conn.result)
五、修改用户密码
res=conn.extend.microsoft.modify_password('CN=domainuser1,OU=domainusers,dc=dctest,dc=com','123456@dd', '')
修改用户密码需要在创建server对象是,use_ssl为True,且需要域服务器安装了Active Directionary证书服务