首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 连接AD域账户,实现用户名密码验证

Python 连接AD域账户,实现用户名密码验证

原创
作者头像
no怕不了木
发布于 2024-08-30 08:04:16
发布于 2024-08-30 08:04:16
45803
代码可运行
举报
文章被收录于专栏:未来码迹未来码迹
运行总次数:3
代码可运行

说明:目前在做Python的Django项目,需要与公司的域做连接,进行账号的统一管理,故此有以下代码,给有需要的同仁,

可以用做用户验证

导入库

如没有ldap3库,则需要通过pip进行安装

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from ldap3 import Server, Connection, ALL, NTLM, SUBTREE
import random
import re

请替换server_address的值,如“ldap://192.168.1.2”,

替换domain的值如“ test.com”

还需要替换以下dc=test,替换为自己的,

代码语言:python
代码运行次数:1
运行
AI代码解释
复制
conn.search(search_base='dc=test,dc=com',
                    search_filter=f'(sAMAccountName={username})',
                    search_scope=SUBTREE,
                    attributes=['cn', 'mail'])

替换完成后,下面是全部代码

代码语言:python
代码运行次数:2
运行
AI代码解释
复制
#提取AD域用户信息,如果不需要可以做删除,这个在下方代码中有调用,
def get_info(adinfo):
    # 使用正则表达式提取
    result = re.search(r'OU=(.*?),', adinfo).group(1)
    return result

#验证用户名密码,
def authenticate_ad(username, password):

    server_address = "ldap://192.168.1.2"
    domain = "test.com"
    server = Server(server_address, get_info=ALL)

    user = f'{domain}\\{username}'

    conn = Connection(server, user=user, password=password, authentication=NTLM)
    if conn.bind():
        conn.search(search_base='dc=test,dc=com',
                    search_filter=f'(sAMAccountName={username})',
                    search_scope=SUBTREE,
                    attributes=['cn', 'mail'])

        if len(conn.entries) > 0:
            user_info = conn.entries[0]
            user_dn = user_info.entry_dn
            user_cn = user_info.cn.value
            user_mail = user_info.mail.value if user_info.mail else 'N/A'
            conn.unbind()
            return {'username': user_cn, 'email': user_mail,'dp':get_info(user_dn)}
        else:
            conn.unbind()
            return None
    else:
        return None
        
if __name__ == "__main__":
    username = input("用户名: ")
    password = input("密码: ")
    user_info = authenticate_ad(username, password)
    if user_info:
        print("验证成功,用户名密码正确")
        print(user_info)
        print(f"用户名: {user_info['username']}")
        print(f"邮件地址: {user_info['email']}")
    else:
        print("验证失败")

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何使用Python连接ldap
好多使用ldap认证的软件都是Python的,比如superset和airflow, 好吧,他们都是airbnb家的。在配置ldap的时候可能会出现认证失败,你不知道是因为什么导致配置失败的。所以,就要 跟踪源码,看看内部怎么认证实现的。
Ryan-Miao
2019/08/20
2.9K0
Python Django 装饰器权限控制
AD连接。或者AD用户名和邮箱地址,部门和所在群组,群组是获取的ID,因群组名称可能随着组织架构更改,故获取ID,下面函数传入AD用户和密码,会返回这个用户的user_cn、user_mail、user_dn、groups,注意groups获取是一个列表,存储在数据库中为列表,在后面处理权限时需要将存储的列表进行处理
no怕不了木
2025/02/25
1220
Python实现LDAP认证
了解LDAP之前需要先了解“目录服务”,目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。如:人员组织管理,电话簿,地址簿。
清风穆云
2021/08/09
1.8K0
Python使用ldap3操作微软AD
对于client连接ldap server的策略,ldap3提供了4种选择,可以通过client_strategy设置Connection object应用哪种策略:
py3study
2020/01/03
1.8K0
Python使用ldap3操作微软AD
使用Pythonldap3进行LDAP开发
Pythonldap3是Python 3的LDAP接口库,Pythonldap3实现了RFC4511定义的LDAP协议的所有操作和功能,它具有易学易用、高性能的特点,能够轻松地连接LDAP服务和对LDAP目录执行增、删、改、查等操作。
很酷的站长
2023/10/22
1.3K0
使用Pythonldap3进行LDAP开发
Ldap3 库使用方法-完整版修改连接
前几篇文章我们讲解了Ldap3库对AD服务器的各种操作方法: Ldap3 库使用方法(一) Ldap3 库使用方法(二) Ldap3 库使用方法(三) Ldap3 库使用方法(四) Ldap3 库使用方法(五) 以下是代码汇总版: #!/usr/bin/env python # -*- coding: utf-8 -*-import json from ldap3 import ALL_ATTRIBUTES # 注意:ldap3库如果要使用tls(安全连接),需要ad服务先安装并配置好证书服务,才能通过tl
BigYoung小站
2020/05/06
4K3
使用ldap3做后台认证
通常我们自己做的工具,都要用一套自己的账号管理系统,如果工具做得多,这些个账号管理系统又相互独立,维护和管理不是很方便。接入公司的人事系统才是一个好的选择。
赵云龙龙
2019/08/27
2.1K0
使用ldap3做后台认证
python 操作 openldap
# -*- coding: utf-8 -*- # author : s import random,string from ldap3 import Server,Connection,ALL,SUBTREE,ALL_ATTRIBUTES,MODIFY_REPLACE,MODIFY_ADD,MODIFY_DELETE from passlib.hash import  ldap_salted_sha1 as ssha from app.utils import  ErrMsg class LdapOp
py3study
2020/01/06
1.2K0
Ldap3 库使用方法(二)
以上是Ldap3库对AD的User和OU的获取的方法实现。具体的文档,可以参考官网文档:Ldap3 文档以上人员的获取方法,大家主要查看【LDAP Operations】章节的内容。
BigYoung小站
2020/05/06
9230
Ldap3 库使用方法(三)
以上是Ldap3库对AD的User和OU新增的方法。具体的文档,可以参考官网文档:Ldap3 文档
BigYoung小站
2020/05/06
1.3K0
python+ldap实例
首先需要安装python-ldap的模块 http://www.python-ldap.org/。 在这里用的是windows系统,当然比较容易,下载地址 http://pypi.python.org/pypi/python-ldap/。
py3study
2020/01/06
1.9K0
python+ldap实例
Ldap3 库使用方法(五)
今天给大家讲解如何使用Ldap3 库删除AD中用户和部门(OU),以及封装一个账户密码认证方法
BigYoung小站
2020/05/06
6720
Ldap3 库使用方法(一)
ldap3是一个纯Python的LDAP管理库。 项目地址:(https://github.com/cannatag/ldap3) 指导文档:http://ldap3.readthedocs.org
BigYoung小站
2020/05/06
1.6K0
Python 操作LDAP实现用户统一认证密码修改功能
最近做了一个单点登录系统,使用的openLDAP存储用户和组信息。封装了一个ldap的操作类。ldap这东西还是蛮复杂的,用以备忘吧。要是不知道LDAP是什么东西,请把鼠标移到浏览器右上角,mac系统移到左上角,点小叉叉。呵呵……
星哥玩云
2022/07/04
1.4K0
Ldap3 库使用方法(四)
今天给大家讲解如何使用Ldap3 库更新AD中用户和部门(OU)属性,含重命名操作和移动部门方法
BigYoung小站
2020/05/06
8680
c# AD域 权限管理
我现在开始第一步,获取AD域用户所在的组,因为我想把菜单和界面按钮的功能由角色组来控制,用户加入角色组就可以获得相应的权限. 这是我的思路.
全栈程序员站长
2022/08/29
9630
Python使用LDAP做用户认证
LDAP(Light Directory Access Portocol)是轻量目录访问协议,基于X.500标准,支持TCP/IP。
py3study
2020/01/19
3.1K0
beego服务对接LDAP系统统一账户认证
1、服务验证架构图 2、服务代码 // 先判断数据库是否有这个用户,如果没有去LDAP获取用户信息,进行创建,如果LDAP没有该用户数据库中有,进行删除 existuser, _ := models.BackendUserOneUserName(username) data, _ := servers.ConnLDAP(username) if existuser == nil && data != nil { m := models.BackendUser{} o := orm.New
@凌晨
2023/05/02
4700
beego服务对接LDAP系统统一账户认证
金瓯无缺江河一统|Win10系统基于Docker和Python3搭建并维护统一认证系统OpenLdap
    OpenLdap(Lightweight Directory Access Protocol)是什么?它其实是一个开源的、具备工业标准特性的应用协议,可以使用TCP协议提供访问控制和维护分布式信息的目录信息。这是一个传统意义上的书面解释,是的,毫无疑问,你会一脸懵逼。好吧,让我们变得感性一点,假如我每天早上使用Twitter想听听懂王又吹了什么牛,登录Twitter账号密码,紧接着又想上Instagram看看女神又post了什么新靓照,好的,登录Instagram账号密码,摸了一上午的鱼之后,突然想起来要登录公司的邮箱,看看有没有新需求,是的,又需要那该死的账号和密码,甚至于查询社保、公积金提取、交罚款都需要各自系统的账号和密码。想象一下,如果有一套系统可以统一管理和维护所有下游应用的账号和权限,我们不需要花时间重复的注册新应用的账号,而只需要关注应用本身,从而实现账号集中认证管理,此时作为账号管理员的我们只须维护OpenLDAP 服务器条目即可,金瓯无缺江山一统,这就是openladp能够带给我们的好处。
用户9127725
2022/08/08
4850
金瓯无缺江河一统|Win10系统基于Docker和Python3搭建并维护统一认证系统OpenLdap
在没有 Mimikatz 的情况下操作用户密码
通过利用Mimikatz的 lsadump::setntlm和lsadump::changentlm函数,过去已经涵盖了这两个用例。虽然Mimikatz是最好的攻击工具之一,但我会尽量避免使用它,因为它是反病毒和 EDR 工具的高度目标。在这篇文章中,我将专门讨论用例 #2 — 为横向移动或权限提升重置密码。
Khan安全团队
2022/03/21
2.5K0
相关推荐
如何使用Python连接ldap
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验