前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ldap3 库使用方法(三)

Ldap3 库使用方法(三)

作者头像
BigYoung小站
发布2020-05-06 16:17:46
1.2K0
发布2020-05-06 16:17:46
举报

前一篇文章我们讲解了Ldap3库的连接AD服务器的方法

今天给大家讲解如何使用Ldap3 库创建AD中用户和部门(OU)


#!/usr/bin/env python
# -*- coding: utf-8 -*-


import json
from ldap3 import ALL_ATTRIBUTES
# 注意:ldap3库如果要使用tls(安全连接),需要ad服务先安装并配置好证书服务,才能通过tls连接,否则连接测试时会报LDAPSocketOpenError('unable to open socket'
# 如果是进行账号密码修改及账户激活时,会报错:“WILL_NOT_PERFORM”
from ldap3 import Connection, NTLM, Server
from ldap3 import MODIFY_REPLACE




server1 = Server("adtest.com", port=636, use_ssl=True, get_info=ALL, connect_timeout=5)
LDAP_SERVER_POOL = [server1]
SERVER_USER = 'adtest\\administrator'
SERVER_PASSWORD = "XXXXXXX"


class AD(object):
'''    AD用户操作    '''
def __init__(self):
'''初始化'''
self.conn = Connection( #配置服务器连接参数
server=LDAP_SERVER_POOL,
auto_bind=True,
authentication=NTLM,  #连接Windows AD需要配置此项
read_only=False,  #禁止修改数据:True
user=SERVER_USER,#管理员账户
password=SERVER_PASSWORD,
)


self.leaved_base_dn = 'ou=Leaved,dc=adtest,dc=intra'#离职账户所在OU
self.active_base_dn = 'ou=测试部门,dc=adtest,dc=intra'#正式员工账户所在OU
self.search_filter = '(objectclass=user)'#只获取【用户】对象
self.ou_search_filter = '(objectclass=organizationalUnit)'#只获取【OU】对象


def create_obj(self,dn,type,attr=None):
'''
新建用户or 部门,User需要设置密码,激活账户
:param dn: dn = "ou=人事部3,ou=罗辑实验室,dc=adtest,dc=intra"  # 创建的OU的完整路径
dn = "cn=张三,ou=人事部3,ou=罗辑实验室,dc=adtest,dc=intra"  # 创建的User的完整路径
:param type:选项:ou or user
:param attr = {#User 属性表,需要设置什么属性,增加对应的键值对
"SamAccountName": "zhangsan",  # 账号
"EmployeeID":"1",    # 员工编号
"Sn": "张",  # 姓
"name": "张三",
"telephoneNumber": "12345678933",
"mobile": "12345678933",
"UserPrincipalName":"zhangsan@adtest.com",
"Mail":"zhangsan@adtest.com",
"Displayname": "张三",
"Manager":"CN=李四,OU=人事部,DC=adtest,DC=com",#需要使用用户的DN路径
}
attr = {#OU属性表
'name':'人事部',
'managedBy':"CN=张三,OU=IT组,OU=罗辑实验室,DC=adtest,DC=intra", #部分负责人
}
:return:True and success 是创建成功了
(True, {'result': 0, 'description': 'success', 'dn': '', 'message': '', 'referrals': None, 'type': 'addResponse'})


'''
object_class = {'user':['user', 'posixGroup', 'top'],
'ou':['organizationalUnit', 'posixGroup', 'top'],
}
res = self.conn.add(dn=dn,object_class=object_class[type],attributes=attr)
if type == "user": # 如果是用户时,我们需要给账户设置密码,并把账户激活
self.conn.extend.microsoft.modify_password(dn, "XXXXXXXXX")    #设置用户密码
self.conn.modify(dn, {'userAccountControl': [('MODIFY_REPLACE',512)]})    #激活用户
return res, self.conn.result

以上是Ldap3库对AD的User和OU新增的方法。具体的文档,可以参考官网文档:Ldap3 文档

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BigYoung小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档