ldap简介:
LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议
目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样
LDAP目录服务是由目录数据库和一套访问协议组成的系统
ldap基础知识
python操作:

pip install ldap3
# !/usr/bin/python3
# -*- encoding: utf-8 -*-
"""
@File        : open_ldap.py
@Time        : 2021/6/20 17:19
@Author      : yang xin
@Software    : PyCharm
@Description :
"""
import json
import randomimport requests
from ldap3 import Server, Connection, ALL, MODIFY_REPLACEclass LdapOp(object):"""对接ldapOperation Dcouments: http://ldap3.readthedocs.io/"""def __init__(self, ip, port, user, passwd):self._ip = ipself._port = portself._user = userself._passwd = passwdself.dn = self._user.split(',', 1)[1]self.s = Server(self._ip, self._port, get_info=ALL)self.conn = Connection(self.s, self._user, self._passwd, auto_bind=True)# 查询用户def search_users(self, keyword, search_filter):# True or Falsereturn self.conn.search(search_base=keyword, search_filter=search_filter)# 添加用户def add_user(self, dn, object_class, attributes):return self.conn.add(dn=dn, object_class=object_class, attributes=attributes)# 修改用户def modify_user(self, dn, changes):return self.conn.modify(dn, changes)# 删除用户def delete_user(self, dn):self.conn.delete(dn=dn)# 用户认证
def auth_user(username, password):kwargs = {"userName": username,"password": password,}uri = ""headers = {'Content-Type': 'application/json'}res = requests.post(uri, data=json.dumps(kwargs), verify=False, headers=headers).json()if res.get("success"):return True, res.get("token")return False, None# 获取用户列表
def get_userlist(username, password):ok, token = auth_user(username, password)if not ok:return False, "user auth failed"uri = ""headers = {'Content-Type': 'application/json',"token": token}res = requests.post(uri, verify=False, headers=headers).json()if res.get("success"):return True, res.get("data")return False, "get user list failed"# 初始化ldap
def init_ldap():ldap = LdapOp(ip="",port=389,user="",passwd="")return ldapdef salt(length=8):"""生成长度为length 的随机字符串"""aplhabet = "0123456789"return "".join(map(lambda _: random.choice(aplhabet), range(length)))# 用户同步
def sync_user(username, password):ok, users_or_err = get_userlist(username, password)if not ok:return False, users_or_errldap = init_ldap()dn = "ou=eoms,dc=boco,dc=com"inetorgperson = "inetOrgPerson"search_filter = "(objectClass=%s)" % inetorgpersonfor userinfo in users_or_err:cn = "cn=%s" % userinfo['username']search_base = dn_ = "{cn},{dn}".format(cn=cn, dn=dn)# 用户不存在,执行添加if not ldap.search_users(search_base, search_filter):object_class = inetorgpersonattributes = {"cn": userinfo['username'],"sn": userinfo['username'],"displayname": userinfo["companyName"],"mail": "%s@qq.com" % salt(),"telephonenumber": "1840829%s" % salt(4),"userpassword": "{MD5}%s" % salt(),"title": "engineer"}if not ldap.add_user(dn=dn_, object_class=object_class, attributes=attributes):return False, "add user failed"# 存在,修改else:# 只修改公司名字,用户名不能修改, 其他字段可不必修改changes = {"displayname": (MODIFY_REPLACE, [userinfo["companyName"]])}if not ldap.modify_user(dn=dn_, changes=changes):return False, "modify user failed"return True, "sync user success"USERNAME = ""
PASSWORD = ""sync_user(USERNAME, PASSWORD)

python对接ldap相关推荐

  1. python资料库-Python对接六大主流数据库(只需三步)

    作为近两年来最火的编程语言的python,受到广大程序员的追捧必然是有其原因的,如果要挑出几点来讲的话,第一条那就python语法简洁,易上手,第二条呢? 便是python有着极其丰富的第三方的库. ...

  2. python资料库-Python对接六大主流数据库,只需三步

    作为近两年来最火的编程语言的python,受到广大程序员的追捧必然是有其原因的,如果要挑出几点来讲的话,第一条那就python语法简洁,易上手,第二条呢? 便是python有着极其丰富的第三方的库. ...

  3. 【转载】Python对接六大主流数据库,只需三步

    转载网址: https://developer.51cto.com/art/201907/600444.htm Mysql 安装pymysql Oracle python中对接oracle数据库,使用 ...

  4. python实现ldap接入

    需要提前安装python-ldap模块 python接入ldap其实分了几个步骤: 1.使用一个管理员账户登陆到ldap 2.使用一个字段值是唯一的字段,去搜索到要验证用户的DN值(ldap搜索到的单 ...

  5. Zabbix 对接 LDAP 实现用户统一登录的方法

    需求 某公司环境是基于AD域来批量管理域用户的,zabbix监控平台上又要创建账号,这样非常麻烦,也不利于账号的管理,所以为了集中管理,想通过zabbix对接公司AD域用户,实现用户认证统一登录. 环 ...

  6. Rancher2.6 Monitoring Grafana 对接 LDAP

    作者简介 谢泽钦,SUSE Rancher 技术支持工程师,负责订阅客户的维护与售后技术支持服务,提供相关技术解决方案.拥有 CKA.CKS 官方认证,多年云计算领域经验,经历了从 OpenStack ...

  7. python对接蚂蚁金服支付宝

    1.0 创建应用(备注:真实应用) 运营人员,在正式使用的时候步骤 https://ds.alipay.com/fd-irng3zgw/index.html 点击[控制台],进行应用的创建 2.0 沙 ...

  8. keystone对接ldap

    一. 为什么使用LDAP 随着公司内部各种开源平台越来越多(例如:gitlab.Jenkins.Yapi等等),账号维护变成一个繁琐麻烦的事情,急需有一个统一的账号维护平台,一个人只需一个账号,在公司 ...

  9. python access token_如何基于python对接钉钉并获取access_token

    如何基于python对接钉钉并获取access_token 1.首先注册应用,获取 appkey.appsecret api_url = "https://oapi.dingtalk.com ...

最新文章

  1. 如何提高android串口kernel log等级
  2. java购物菜单的选择功能_java-第四章-升级我行我素购物管理系统,实现购物菜单的选择...
  3. 博客搬迁地址到csdn了
  4. 匿名函数-lambda
  5. 【clickhouse】clickhouse UTC 时间带有时区 如何写入
  6. mac系统安装npm所遇问题
  7. 字符串流 ostrstream 和 istrstream
  8. iPhone客户端开发笔记(二)
  9. 三星q90 回音壁最新固件1010.5升级教程
  10. matlab weibpdf函数,MATLAB常用函数
  11. P6647 [CCC 2019] Tourism
  12. network secruity studay day3
  13. 都9012年了还没用过typescript?
  14. git lfs常用命令
  15. 单片机课设———基于51单片机的智能风扇控制器(汇编语言)
  16. 从全面了解高级计量经济学体系+stata实操+实证研究前沿+论文+大数据机器学习+空间计量......._Stata高级计量经济学 陈强
  17. PowerDesigner破解版下载及安装教程
  18. Canonical Coordinate System
  19. 什么是全栈工程师 摘自360
  20. 从0开始强化学习——强化学习的简介和分类

热门文章

  1. 【模型加速】PointPillars模型TensorRT加速实验(1)
  2. 第1194期机器学习日报(2017-12-25)
  3. 《 所谓情商高,就是会说话》嘟书分享第八期
  4. PMP 考点 第九章 项目资源管理
  5. 计算机毕业设计Java在线家教预约系统(源码+系统+mysql数据库+Lw文档)
  6. 免流量惠生活360手机浏览器6.9.9.2评测
  7. K12472 射击比赛
  8. 福州大学数学与计算机科学学院研究生,福州大学数学与计算机科学学院/软件学院2019年招收专业学位硕士学位研究生调剂方案...
  9. .Net调用Office Com组件的原理及问题检索com类工厂组件检索 COM 类工厂中 CLSID 为 {XXX} 的组件失败
  10. 实测解密iPhone Xs Max的双卡双待功能:还不如安卓千元机