首页
python
Win桌面应用自动化pywinauto
pywinauto遍历展示程序的所有菜单项
Python3使用串口
Python字符串处理
Python3实现配置文件差异对比(键值对key=value的形式)
正则
正则匹配两个字符之间的字符串
正则提取markdown中图片链接
正则表达式基本知识
字符串-正则实例
Python生成8位随机字符串的一些方法
python3批量ping检测
python3检测一批主机ip的tcp端口
Python3--DNS
3D人体骨架检测(mediapipe)
Python-网络
检测到win电脑断网就发出告警声音
Python编写的DNS服务可靠性测试程序
Python编写的TCP/UDP端口探测程序
Python抓包-Pyshark
并发扫描TCP、UDP端口
Python-DHCP
端口的问题以及绑定端口(Python)
VSCode编辑器
python远程开机工具
Pyhton3--Win注册表
开源IT运维项目
python知识点
Python开源运维项目集合
python3备份交换机配置
Python3使用snmp获取H3C交换机arp表
Python检测tcp端口状态并发送到企微群
Python3使用smtp发邮件
Python3使用smtp发邮件(带附件)
Python3拉取微软AD域所有用户信息
Python3使用微软AD域账号认证
自动更新公网域名的解析(阿里云)
每日定时推送Excel中排班表信息到企微群
Django
Django模板标签
Django在发送POST请求时返回403错误
Django-mysql数据库条件查询
uwsgi 配置 python virtualenv 虚拟环境目录 ( ini 配置)
常用收藏
python3数据类型转换
python处理文本
txt每行一个字符串_用英文逗号连接
txt_匹配并拆分出需要字符串
python获取日期时间
python执行linux命令的三种方式
python使用ssh连接到linux服务器执行命令
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
Python3使用微软AD域账号认证
环境:Centos7 + Python3.8.0 使用python包: ```python pip3 list python-ldap 3.3.1 ``` 示例中使用的参数: 域控ip、域、密码: 192.168.1.1 ,”bj.localnetwork.cn”, ‘123456789’ 公共账户DN信息(CN项为公共邮箱中文名): CN=邮箱中文名,OU=公共邮箱,OU=Person,DC=bj,DC=localnetwork,DC=cn 用户OU: OU=Person,DC=bj,DC=localnetwork,DC=cn [LDAP:什么是DN](https://lesca.me/archives/what-is-distinguished-names.html "LDAP:什么是DN") 在LDAP协议中,DN用于指向一个LDAP对象,DN由一系列RDN(relative distinguished names)组成。 RDN之间用“逗号”隔开,它是一个键值对,格式为:attribute=value ```python # Copyright: (c) OpenSpug Organization. https://github.com/openspug/spug # Copyright: (c) <spug.dev@gmail.com> # Released under the AGPL-3.0 License. #from apps.setting.models import Setting import ldap import json class LDAP: def __init__(self): #server_info = Setting.objects.filter(key='ldap_service').first() #ldap_info_dict = json.loads(server_info.value) self.server = "192.168.1.1" self.port = "389" # self.rules = ldap_info_dict['rules'] self.admin_dn = "CN=技术部邮箱,OU=公共邮箱,OU=Person,DC=bj,DC=localnetwork,DC=cn" self.password = "123456789" self.base_dn = "OU=Person,DC=bj,DC=localnetwork,DC=cn" def valid_user(self, username, password): try: print("准备连接ldap") conn = ldap.initialize("ldap://{0}:{1}".format(self.server, self.port), bytes_mode=False) print("验证") conn.simple_bind_s(self.admin_dn, self.password) print("连接ldap成功") #search_filter = f'({self.rules}={username})' search_filter = "sAMAccountName=" + username ldap_result_id = conn.search(self.base_dn, ldap.SCOPE_SUBTREE, search_filter, None) print("准备搜索用户") result_type, result_data = conn.result(ldap_result_id, 0) if result_type == ldap.RES_SEARCH_ENTRY: print("找到用户") dn = result_data[0][0] #user_info = result_data[0][1] #print(dn) if conn.simple_bind_s(dn, password): print("用户:%s LDAP认证成功" % username) return True, None else: print("用户:%s LDAP认证失败" % username) return False, None else: print("认证失败") return False, None except Exception as error: args = error.args print("ldap发生意外") return False, args[0].get('desc', '未知错误') if args else '%s' % error ```
local
2021年11月18日 10:19
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码