cannatag/ldap3
GitHub: cannatag/ldap3
纯 Python 实现的 LDAP V3 客户端库,提供 pythonic 的抽象层和完善的线程安全策略。
Stars: 933 | Forks: 282
# LDAP3
.. image:: https://img.shields.io/pypi/v/ldap3.svg
:target: https://pypi.python.org/pypi/ldap3/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/l/ldap3.svg
:target: https://pypi.python.org/pypi/ldap3/
:alt: License
.. image:: https://img.shields.io/travis/cannatag/ldap3/master.svg
:target: https://travis-ci.org/cannatag/ldap3
:alt: TRAVIS-CI build status for master branch
ldap3 是一个严格遵循 RFC 4510 标准的 **LDAP V3 纯 Python 客户端** 库。同一套代码库可以在 Python 2、Python 3、PyPy 和 PyPy3 中运行。
## 更 Pythonic 的 LDAP
LDAP 操作看起来笨拙且难以使用,因为它们反映了旧时代的观念,即耗时的操作应该在客户端执行,以免服务器因繁重的处理而不堪重负。为了缓解这个问题,ldap3 包含了一个功能齐全的 **Abstraction Layer**,让你以现代且 *pythonic* 的方式与 LDAP 服务器交互。使用 Abstraction Layer,你根本不需要直接发出任何 LDAP 操作。
## 线程安全策略
在多线程程序中,你必须使用 **SAFE_SYNC**(同步连接策略)、**SAFE_RESTARTABLE**(可重启同步连接策略)或 **ASYNC**(异步连接策略)之一。
使用 SAFE_SYNC 或 SAFE_RESTARTABLE 策略的每个 LDAP 操作都会返回一个包含四个元素的元组:status、result、response 和 request:
* status:表明操作是否成功
* result:操作的 LDAP 结果
* response:LDAP 搜索操作的响应
* request:操作的原始请求
SafeSync 策略可以与 Abstract Layer 一起使用,但 Abstract Layer 目前并不是线程安全的。
例如,要使用 *SAFE_SYNC*:
```
from ldap3 import Server, Connection, SAFE_SYNC
server = Server('my_server')
conn = Connection(server, 'my_user', 'my_password', client_strategy=SAFE_SYNC, auto_bind=True)
status, result, response, _ = conn.search('o=test', '(objectclass=*)') # usually you don't need the original request (4th element of the returned tuple)
```
使用 *ASYNC* 时,你必须使用 *get_response()* 方法来请求响应。
## 主页
ldap3 项目的主页是 https://github.com/cannatag/ldap3
## 文档
文档可在 http://ldap3.readthedocs.io 获取
## 许可证
ldap3 项目是根据 **LGPL v3 许可证** 发布的开源软件。
版权所有 2013 - 2025 Giovanni Cannata
## PEP8 合规性
ldap3 符合 PEP8 规范,行长度除外。
## 下载
可从 https://pypi.python.org/pypi/ldap3 下载包。
## 安装
使用 **pip install ldap3** 安装
## Git 仓库
你可以在 https://github.com/cannatag/ldap3 下载最新源代码
## 持续集成
用于测试的持续集成位于 https://travis-ci.org/cannatag/ldap3
## 支持与开发
你可以在 https://github.com/cannatag/ldap3/issues/new 提交支持工单
你可以在 https://github.com/cannatag/ldap3/tree/dev 的 **dev** 分支提交 pull request
## 致谢
* **Ilya Etingof**,*pyasn1* 包的作者,感谢他出色的工作和支持。
* **Mark Lutz**,感谢他优秀的 *Learning Python* 和 *Programming Python* 系列书籍,以及 **John Goerzen** 和 **Brandon Rhodes**,感谢他们的书 *Foundations of Python Network Programming*。这些书是学习 Python 的绝佳工具,本项目深受其益。
* **JetBrains**,感谢向本项目捐赠 *PyCharm Professional* 的开源许可证。
* **GitHub**,感谢提供我用于开发本项目的 *免费源代码仓库空间和工具*。
* **FreeIPA** 团队,感谢允许我在 ldap3 教程中使用他们的演示 LDAP 服务器。
## 联系我
如需信息和提出建议,你可以通过 cannatag@gmail.com 联系我。你也可以在 https://github.com/cannatag/ldap3/issues/new 开启支持工单
## 捐赠
如果你想维持这个项目的运行,你可以给我发送一张 Amazon 礼品卡。我将用它来提升我的信息与通信技术技能。
## 更新日志
更新的变更日志位于 https://ldap3.readthedocs.io/changelog.html
标签:Active Directory, AD, Awesome, Checkov, LDAP, LDAP客户端, Plaso, PyPy, Python, Python2, Python3, RFC 4510, 内核驱动, 同步异步, 开发库, 开源库, 抽象层, 搜索引擎爬虫, 无后门, 目录服务, 系统管理, 纯Python, 线程安全, 网络协议, 逆向工具, 镜像验证