代码连接:https://github.com/raykuan/ldap-notes

使用python的ldap模块连接AD服务器,有两种方式:

非加密:con = ldap.initialize('ldap://myhost.com:389)

加密(SSL):con = ldap.initialize('ldaps://myhost.com:636)

使用非加密的ldap时,只能对AD域账号信息查询。如果要对AD域用户信息进行修改和新增操作,必须使用(SSL)加密方式连接AD,需满足如下几个条件:

① AD上需要安装证书服务

② 连接AD的主机上使用http://myhost.com/certsrv/打开浏览器申请证书

③ 如果连接AD的主机是Linux,需要安装openssl包,制作CA证书

# 使用openssl命令把申请到的AD主机上的CA证书格式转换为.pem

openssl x509 -in master.cer -inform der -outform pem -out master.pem

# 使用openssl命令指定CA证书连接到AD主机

openssl s_client -connect myhost:636 -CAfile /path/to/master.pem

# 查看CN subject信息,python中ldap初始化的时间需要保证和CN的域名一致

openssl x509 -noout -text -in imsva_cert.pem | grep Subject

Subject: C=en, ST=xx, O=yy, OU=zz, CN=test.com

con = ldap.initialize('ldaps://myhost.com')

可以在/etc/hosts文件下增加域名解析记录

④ 在Python的ldap初始化连接AD前,设置CA证书文件加载

import ldap
# point to the cert
cert_file='/path/to/master.pem'
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, cert_file)
con = ldap.initialize('ldaps://myhost.com')
dn = 'CN=me,DC=myhost,DC=com'
pw = 'password'
con.simple_bind_s(dn, pw)

注意:此处dn是有管理员权限的AD用户,通过绑定此用户才能使用ldaps对域用户的信息进行增删改,查询的时间一般使用非SSL连接,普通用户即可。

最新文章

  1. MLA Handbook for Writers of Research Papers笔记
  2. Handler 消息传递机制
  3. oracle 认证方式
  4. SQL Server 一些关键字详解(二)
  5. jquery实现ajax,返回json数据
  6. Android之ListView/GridView 优化
  7. SCSI miniport 驾驶一个简单的框架
  8. jQuery插件Flot实战Demo
  9. github+hexo搭建自己的博客网站(一)基础入门
  10. PyQt5实时汇率查询
  11. VC下防止反汇编的办法(1)
  12. vue实现淘宝商品详情页属性选择功能
  13. make: 警告:检测到时钟错误。您的创建可能是不完整的。
  14. C#-类(九)
  15. [原创]Java性能优化权威指南读书思维导图4
  16. 最大匹配字符串LCS,The Longest Common Substring
  17. mahout基于Hadoop的CF代码分析(转)
  18. 洛谷P3265 [JLOI2015]装备购买 [线性基]
  19. hdu5106 数位dp
  20. POJ 2528 Mayor's posters 离散化+线段树

热门文章

  1. java实现微信支付
  2. 利用docker hub做中转拉取google的k8s镜像
  3. 精读JavaScript模式(二)
  4. JVM学习记录-Java内存模型(一)
  5. Angular ngIf相关问题
  6. WebForm 【简单控件】【表单元素】
  7. .net Core 部署到 Linux
  8. JAVA通过XPath解析XML性能比较
  9. MyBatis开发Dao层的两种方式(Mapper动态代理方式)
  10. linux下安装oracle及weblogic