python 之 LDAP 用户统一认证登录
pip install ldap3 # 环境安装
from ldap3 import Server, Connection,SUBTREE
ldap_host = 'xx.xx.x.x' #ldap服务器地址
ldap_port = 389 #默认389
ldap_admin_user = 'xx' #ldap管理员账户用户名
ldap_admin_password = 'xxx' #ldap管理员账户密码
ldap_base_search = 'dc=xx,dc=xx' #查询域 def ldap_auth(username, password):
'''
ldap验证方法
:param username: 用户名
:param password: 密码
:return:
'''
s = Server(host=ldap_host, port=ldap_port, use_ssl=False, get_info='ALL') #连接ldap服务器
ldapz_admin_connection = Connection(s, user=ldap_admin_user, password=ldap_admin_password, auto_bind='NONE',
version=3,
authentication='SIMPLE', client_strategy='SYNC', auto_referrals=True,
check_names=True,
read_only=False, lazy=False,
raise_exceptions=False) # 连上以后必须bind才能有值
ldapz_admin_connection.bind() # 这个是为了查询你输入的用户名的入口搜索地址
res = ldapz_admin_connection.search(search_base=ldap_base_search,
search_filter='(sAMAccountName={})'.format(username),
search_scope=SUBTREE,
attributes=['cn', 'givenName', 'mail', 'sAMAccountName'],
) try:
if res:
entry = ldapz_admin_connection.response[0]
logger.info(entry)
dn = entry['dn']
attr_dict = entry['attributes']
logger.info('attr_dic:%s' %attr_dict) try:
# 这个connect是通过你的用户名和密码还有上面搜到的入口搜索来查询的
conn2 = Connection(s, user=dn, password=password, check_names=True, lazy=False, raise_exceptions=False)
conn2.bind()
# logger.info(conn2.result["description"]) # 正确-success 不正确-invalidCredentials
if conn2.result["description"] == "success":
logger.info("ldap auth pass!")
return True
else:
logger.info("username or password error!")
return False
except Exception as e:
logger.info("username or password error!")
logger.info(e)
return False
except KeyError as e:
logger.info("username or password error!")
logger.info(e)
return False ldap_auth('username','password')
python 之 LDAP 用户统一认证登录的更多相关文章
- [原创]django+ldap实现统一认证部分二(python-ldap实践)
前言 接上篇文章 [原创]django+ldap实现统一认证部分一(django-auth-ldap实践) 继续实现我们的统一认证 python-ldap 我在sso项目的backend/lib/co ...
- [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)
前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 ,ldap部署相关,ldap双机\LAM配置管理\ldap备份还原,目前来说,我们已经有了高可用性的ldap环境了 ...
- LDAP+Gitea统一认证Git服务器账户管理openLdap和微软的ad
很多时候我们需要管理多个内容管理系统,比如Jira.Jenkins.GitEA/Gitlab等等各种管理系统,我们需要每一套管理系统每个人都管理一套密码,每套系统每套密码简直是一种灾难,于是LDAP可 ...
- 通过ssh协议实现用户key认证登录
author:JevonWei 版权声明:原创作品 用户实现key认证登录 主机A 192.168.198,134 主机B 192.168.198,131 主机C 192.168.198,136 创建 ...
- win10环境下为mongoDB创建用户并认证登录
一.配置mongoDB的bin目录到环境变量中的path;例如:D:\DatabaseService\MongoDB\Server\4.0\bin 二.cmd打开控制台,然后输入mongo回车,可以进 ...
- python简单实现用户表单登录
实现简单的用户表单验证登录 user="desperado" pwd=" s=0 for i in range(10): if s < 3: username = ...
- 【Python】Django用户、认证、鉴权模块使用
此文是总结Django官方网站里面的Document的文章 User authentication in Django http://www.djangoproject.com/documentati ...
- [原创]django+ldap+memcache实现单点登录+统一认证
前言 由于公司内部的系统越来越多,为了方便用户使用,通过django进行了单点登录和统一认证的尝试,目前实现了django项目的单点登录和非django项目的统一认证,中间波折挺多,涉及的技术包括dj ...
- openvpn通过ldap或ad统一认证解决方案思路分享
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/986933 缘起:成 ...
- IdentityServer4实现单点登录统一认证
什么是单点登录统一认证:假如某公司旗下有10个网站(比如各种管理网站:人事系统啊,财务系统啊,业绩系统啊等),我是该公司一管理员或者用户,按照传统网站模式是这样:我打开A网站 输入账号密码 然后进入到 ...
随机推荐
- Springboot简单功能示例-2 KEY初始化功能和全局错误处理
springboot-sample 介绍 springboot简单示例 跳转到发行版 查看发行版说明 软件架构(当前发行版使用) springboot hutool-all 非常好的常用java工具库 ...
- C++中::和:, .和->的作用和区别
符号::和:的作用和区别 ::是作用域运算符,A::B表示作用域A中的-名称B,A可以是名字空间.类.结构: 类作用域操作符 "::"指明了成员函数所属的类.如:M::f(s)就表 ...
- 物理standby database的日常维护【转】
1.停止Standby select process, status from v$managed_standby; --查看备库是否在应用日志进行恢复 alter database recover ...
- 【源码解读(一)】EFCORE源码解读之创建DBContext查询拦截
引言 在网上很少看到有关于系统讲解EFCore源码的,可能大概也许是因为EFCore的源码总体是没有asp.net web的源码流程清晰,正如群友所说,EFCore的源码大致看起来有点凌乱,与其说凌乱 ...
- VSCode使用JavaScript刷LeetCode配置教程(亲试可以!)
账号秘密都对,但是缺登录不成功的问题 诀窍可能是: 在属性设置中把LeetCode版本改成cn.点击LeetCode配置,修改Endpoint配置项,改成leetcode-cn,再次尝试登陆即可. 大 ...
- DFS洛谷4961(求联通块)
说实话这个题审题把我卡了半天,还是我太菜 直接上代码吧 偷个懒用万能库. #include"bits/stdc++.h" using namespace std; int mp[1 ...
- html笔记重点
第五周-周二 一.视频和音频 <video src="路径" controls="controls"></video> 1.加contr ...
- mysql 索引图
- 线上JAVA应用平稳运行一段时间后出现JVM崩溃问题
一.问题是怎么发现的 系统是一个定时任务系统,需要定时执行业务代码,业务代码主要是访问MYSQL数据库和缓存进行操作,该开始启动,系统日志一切正常,但是运行一段时间到凌晨后,系统就自动崩溃了,java ...
- idea的git插件,可以显示每一行代码的git版本记录,很好用
再给大家推荐一款idea的git插件----GitToolBox,可以显示每一行代码的git版本记录,很好用 效果图如下 可以在光标所在行代码的后面显示git的版本记录信息(提交的用户名,提交的时间等 ...