网上很多文档都是割裂的,此次使用python操作微软ad踩了不少坑,借助ChatGPT也没有用,记录一下正确信息。
环境信息: Windows Server 2019
Active Directory Domain Services
DNS Server
以上环境需要提前安装完成,具体信息可以参考对应服务部署教程
部署Active Direct Certificate Services
为了避免重复造轮子,这一部分内容可以直接参考以下链接
http://cn-sec.com/archives/482172.html
部署完成后,使用连接中的ldp.exe尝试使用ssl去链接ad,如果成功则可以继续往下,不成功就先排查证书服务的问题。
客户端的配置方式
鉴于目前我的程序是跑在Windows 11的环境里面,这部分先讲Windows的部分,后期放到Linux里面跑服务的时候,再更新对应的方式。
Windows 证书配置
- win+R在运行的窗口输入mmc并回车打开一个console根控制台
- 打开如图所示
3.在弹出的窗口选择证书
4.选择管理哪个账号证书的窗口,需要选择服务账户,如图
5.在服务账户选择窗口请选择AD账户
完成之后在控制台会出现一个域控制器的证书管理列表,选择在搭建ADCS时的证书,如图所示
右击导出证书,导出证书时一定要分两次,一次导出的时候需要带私钥,第二次导出的时候不需要带私钥。
他们分别为带私钥的pfx格式和不带私钥的cer格式
6.把两个证书复制到已经加入到域的Windows客户端中
7.cer文件安装到本地计算机中,存储位置选择本地计算机,证书存储在个人区域,如图
8.pfx文件也需要安装到本地计算机中,存储区域选择为受信任的根证书颁发机构
9.两个证书安装成功后,点击cer证书应该是不会报错的,如下
图
如果证书不是这个状态,则证书有问题,就不能使用ldaps方式操作AD会出现证书相关的错误。文章来源:https://www.toymoban.com/news/detail-736690.html
python使用ldap3操作AD示例
import ssl
from ldap3 import Server, Connection,SASL, ALL,NTLM,MODIFY_REPLACE,HASHED_SALTED_SHA,HASHED_SALTED_SHA256,Tls
from ldap3.utils.hashed import hashed
SERVER = xxx.xxx.cn
USER = 'xxx.xxx.cn\\user'
PASSWORD = 'password'
BASE_DC = 'dc=xxx.xxx.cn,dc=cn'
def connection():
# ldaps connection settings(This link methmod allows for password modification)
server = Server(SERVER,port=636,use_ssl=True,get_info=ALL,tls=Tls(validate=ssl.CERT_REQUIRED, version=ssl.PROTOCOL_TLSv1,ciphers=ALL))
# ldap connection settings
# server = Server(SERVER,get_info=ALL)
conn = Connection(server,user=USER,authentication=NTLM, password=PASSWORD)
conn.bind()
# Check if ldpas or ldap is connected to the server
print(conn.server)
- 代码中不需要使用ldap3官方教程的
start_tls()
方法,在此处踩很久的坑,证书配置正确就ok切记。 - 全局变量的值需要替换成自己的具体信息,其中server部分其实就是证书Issued by的名字,上述代码成功运行后会打印出以下信息
ldaps://lsym-ad-dc01.lsym.cn:636 - ssl
则正常连接到AD了,可以进行修改密码等操作文章来源地址https://www.toymoban.com/news/detail-736690.html
到了这里,关于使用python ldap3对接微软AD的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!