使用Python实现与AD域进行对接

本文介绍了如何使用Python与AD域进行对接,满足用户查询及登录验证的需求。在Django框架的考勤软件中,原有的密码校验逻辑不适用于实时对接AD域。通过使用python-ldap库,实现了对接AD域的接口,调整登陆逻辑,实现账号密码的实时校验。在实际操作中,需要注意python-ldap库的正确安装,并解决Windows环境下可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上上周接到需求,要将软件实现与客户AD域的信息进行对接。

需求如下:

    1、在软件注册用户的页面新建一个功能,能够查询该用户名是否在AD域内存在。

    2、用户登陆软件的时候对输入的账号密码与AD域内的账号密码进行校验,能够实时以AD域的账号密码登陆。

公司的考勤软件使用Django框架开发,用户登陆这一块用的是Django本身‘密码MD5加密’---‘保存数据库’---‘登陆时进行比对’的逻辑。

看到需求,直接否认了这种Django本身的逻辑,开玩笑,几千人的密码要进行实时更新,对服务器的压力也太大了,而且windows的官方文档写的清清楚楚:AD域不会提供密码。

Python对接AD域自然要用到ldap库,安装ldap库的时候最开始使用pip安装,后来软件报错才发现安装错误,应该安装python-ldap,而不是ldap。后来找到64位的安装包才安装成功。

(windows使用python有时候会有很多坑,因为有些库是依赖于VS,比较麻烦。)

ldap提供了接口可以供我们对AD域内的信息进行比对,只用修改Django的登陆逻辑,每次登陆的时候调用接口,和AD域内的信息进行比对就行了。

代码如下:

# -*- coding: UTF-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import ldap,logging,time
logfile = 'e:\\a.txt'
# logging.basicConfig(filename=logfile,level=logging.INFO)
# logging.basicConfig(format='%(time.asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
logging.basicConfig(level=logging.INFO,
                    #format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', #返回值:Thu, 26 May 2016 15:09:31 t11.py[line:92] INFO
                    format='%(asctime)s %(levelname)s %(message)s',
                    #datefmt='%a, %d %b %Y %H:%M:%S',
                    #datefmt='%Y/%m/%
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值