python-ldap实现登录案例

 1 ldap_config = {
 2     ‘ldap_path‘: ‘ldap://xx.xx.xx.xx:389‘,
 3     ‘base_dn‘: ‘ou=users,dc=ledo,dc=com‘,
 4     ‘ldap_user‘: ‘uid=reporttest,ou=users,dc=ledo,dc=com‘,
 5     ‘ldap_pass‘: ‘111111.0‘,
 6     ‘original_pass‘: ‘111111.0‘
 7 }
 8
 9 ldap_message = {
10     0: 0, #‘ok‘
11     1: 1, #‘用户名或密码错误‘
12     2: 2, #ldap验证异常‘
13 }
14
15 import ldap
16 import base64
17 import hashlib
18 from config_message import ldap_config, ldap_message
19
20
21 class LDAP_API(object):
22
23     _ldap_path = ldap_config[‘ldap_path‘]
24     _base_dn = ldap_config[‘base_dn‘]
25     _ldap_user = ldap_config[‘ldap_user‘]
26     _ldap_pass = ldap_config[‘ldap_pass‘]
27     _original_pass = ldap_config[‘original_pass‘]
28
29     # 连接ldap服务器
30     def __init__(self):
31
32         try:
33             self.ldapconn = ldap.initialize(self._ldap_path)
34             self.ldapconn.protocal_version = ldap.VERSION3
35             self.ldapconn.simple_bind(self._ldap_user, self._ldap_pass)
36
37         except ldap.LDAPError, e:
38             print e
39
40     # 验证用户登录
41     def ldap_check_login(self, username, password):
42
43         obj = self.ldapconn
44         searchScope = ldap.SCOPE_SUBTREE
45         # searchFilter = ‘(&(cn=‘+username+‘)(userPassword=‘+password+‘))‘
46         searchFilter = ‘uid=‘ + username
47
48         try:
49             obj.search(self._base_dn, searchScope, searchFilter, None)  # id--2
50             # 将上一步计算的id在下面运算
51             result_type, result_data = obj.result(2, 0)
52             if result_type != ldap.RES_SEARCH_ENTRY:
53                 return {‘status‘: ldap_message[1], ‘data‘: ‘‘}
54             dic = result_data[0][1]
55             l_realname = dic[‘sn‘][0]
56             l_password = dic[‘userPassword‘][0]
57             md_password = LDAP_API.hash_md5(password)
58             if l_password in (password, md_password):
59                 return {‘status‘: ldap_message[0], ‘data‘: l_realname}
60             else:
61                 return {‘status‘: ldap_message[1], ‘data‘: ‘‘}
62         except ldap.LDAPError, e:
63             return {‘status‘: ldap_message[2], ‘data‘: ‘‘}
64
65     @staticmethod
66     def hash_md5(data):
67         md = hashlib.md5()
68         md.update(str(data))
69         a = md.digest()
70         b = ‘{MD5}‘ + base64.b64encode(a)
71         return b

链接    http://blog.csdn.net/shanliangliuxing/article/details/8266267

时间: 2024-08-11 00:55:06

python-ldap实现登录案例的相关文章

selenium+python自动化之登录案例

一.登录 1.先打开浏览器 2.打开论坛主页:http://www.hordehome.com/ 3.查找元素之前可以先设置元素等待:implicitly_wait() 4.点登录按钮,弹出登录框 5.输入用户名.密码,然后点登录 二.检查结果 1.登录完成之后,需要检查是否登录成功,这里就需要有个检查点,小编选择的是查看登录后头像的属性 2.先定位到登录头像,通过get_attribute()方法获取到这个对象的title属性 3.判断获取到的值,与期望结果是否一致 4.符合预期结果测试通过

Nginx 结合Python Ldap认证用于Kibana权限登陆

参考及依赖 https://github.com/nginxinc/nginx-ldap-auth http://nginx.org/ nginx-1.14.2 http_auth_request_module nginx-ldap-auth python2.7 python-ldap Nginx支持ldap 部署nginx,注意需要http_auth_request_module支持 wget http://nginx.org/download/nginx-1.14.2.tar.gz tar

django框架学习:二十四.django表单post登录案例

前言 上一篇学习了注册案例,今天学习一下post登录案例,注册是往数据库插入数据,登 录是从数据库里面查询数据. 注册页面 新建HTML文件,表单提交页面包含name,age,qq,psw,提交. 页面显示如下: 注册页面视图函数 通过表单提交的请求数据,先去数据库进行查询,如果有返回用户名已经存在,如果没有此用户名在数据库创建保存提交的数据,密码psw为了安全需要进行加密处理. 密码加密make_password from django.contrib.auth.hashers import

struts登录案例和自定义拦截器

struts登录案例:struts.xml<struts> <constant name="struts.devMode" value="true" /> <constant name="struts.custom.i18n.resources" value="messages"></constant> <package name="basic" ext

Python实现自动登录/登出校园网网关

学校校园网的网络连接有免费连接和收费连接两种类型,可想而知收费连接浏览体验更佳,比如可以访问更多的网站.之前收费地址只能开通包月服务才可使用,后来居然有了每个月60小时的免费使用收费地址的优惠.但是,一旦连接了收费地址而忘记及时断开,60小时会很快用完.     为了节约收费地址的使用时间,采用如下方案:每隔1个小时,都在本机上断开校园网的收费连接,同时连接免费连接,这样,每次手动连接收费连接之后,最多使用1个小时,就会被自动断开. 1. python实现连接/断开网络连接      通过执行p

JavaWeb-13 (用户的注册和登录案例)

JavaWeb-13:项目案例 用户注册和登录案例项目 一.用户注册和登录案例 1.技术架构:三层架构(表现层MVC:M:model V:View C:Controller) 2.要求:JSP中不能出现一行java脚本或java表达式.除了指令<%@%>,其余地方不能有<%%> 3.数据库:临时使用xml.解析使用Dom4j 4.必须知道要干什么? 5.开发步骤: a.建立工程,搭建开发环境(拷贝jar包.建立配置文件) dom4j.jar jaxen.jar commons-be

python实现人人网登录的例子

例子,python实现登录人人网.原文地址:http://www.jbxue.com/article/python/22994.html #!/usr/bin/python # www.jbxue.com import re import urllib2 import cookielib def renren(): cj = cookielib.LWPCookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)

【python】自动登录51cto家园

自动登录:http://home.51cto.com 1.分析: 使用httpfox抓取手动登录home.51cto.com的过程,过程如下: 点登录,提交用户名与密码到http://home.51cto.com/index.php?s=/Index/doLogin 这个地址,正确后,他会返回的内容包含很多链接,如第二个图片.然后分别get这些链接.请求完这些链接后,再访问个人主页http://home.51cto.com/index.php?s=/Home/index post成功后服务器返回

Android first---文件读取(登录案例编写为主)

以android登录案例来介绍文件的读取与androidAPI给予的方法 第一步:绘制界面 绘制方法:在线性布局下面设置相对布局 代码部分: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_pa

Android(java)学习笔记212:中文乱码的问题处理(qq登录案例)

1.我们在之前的笔记中LoginServlet.java中,我们Tomcat服务器回复给客户端的数据是英文的"Login Success","Login Failed". 现在我们改成如下的汉字: 1 package com.himi.web; 2 3 import java.io.IOException; 4 import javax.servlet.ServletException; 5 import javax.servlet.annotation.WebSe