跳转到主要内容

Plone/Zope PluggableAuthService (用户+组) 的 LDAP/AD 插件

项目描述

https://secure.travis-ci.org/collective/pas.plugins.ldap.png https://coveralls.io/repos/collective/pas.plugins.ldap/badge.svg?branch=master&service=github

这是一个为LDAPZope 可插拔认证服务(PAS)开发的插件。

它可以从LDAP目录中提供用户和/或组。

即使它依赖于PlonePAS,它也可以在纯Zope中工作。

如果已安装Plone,则可提供集成层、设置配置文件和plone控制面板页面。

pas.plugins.ldap与旧LDAPUserFolder/ LDAPMultiPlugins以及在其顶部堆叠的包(即PloneLDAP)没有任何关联。

它基于几乎与框架无关的LDAP堆栈node.ext.ldap

目前无法添加或删除用户和组。两者的属性均为只读/写入。

请参阅待办事项部分。

安装

依赖关系

此软件包依赖于python-ldap

要正确构建,您需要在系统中包含一些开发库。

在基于Debian的安装上使用

sudo apt install python-dev libldap2-dev libsasl2-dev libssl-dev

Zope

将以下内容添加到您的buildout实例部分

eggs =
    ...
    pas.plugins.ldap

zcml =
    ...
    pas.plugins.ldap

运行buildout。重启Zope。

浏览到您的acl_users文件夹,并添加LDAP插件。

使用设置表单进行配置,并通过激活选项卡激活其功能。

Plone

将以下内容添加到您的buildout实例部分

eggs =
    ...
    pas.plugins.ldap

运行buildout。重启Plone。

然后转到Plone控制面板,选择扩展并安装LDAP插件。

在左侧出现新的LDAP设置图标。单击它并在那里配置插件。

要使用自己的集成配置文件,请将以下内容添加到配置文件中的metadata.xml文件

...
<dependencies>
    ...
    <dependency>profile-pas.plugins.ldap.plonecontrolpanel:default</dependency>
</dependencies>
...

此外,可以使用portal_setup导出和导入ldap设置。您可以将导出的ldapsettings.xml放置在您的集成配置文件中,以便在下次安装时再次导入。

警告

LDAP密码以纯文本形式存储在那里!

但可以匿名绑定。

日志记录

要获取所有LDAP操作和更多信息的高级输出,请将日志记录级别设置为调试。请注意,这将产生大量输出。

LDAP作为外部服务可能已关闭、无响应或运行缓慢。此软件包将记录此类事件以引起注意。有两个环境变量用于控制LDAP错误的记录

PAS_PLUGINS_LDAP_ERROR_LOG_TIMEOUT

第一次LDAP错误被记录,之后的错误将被忽略,直到经过指定的时间(秒)。这可以抑制LDAP关闭时的日志洪水。默认值:300.0(秒,浮点数)。

PAS_PLUGINS_LDAP_LONG_RUNNING_LOG_THRESHOLD

记录长时间运行的LDAP/PAS操作。如果PAS操作运行时间超过指定的时间(秒),则将其记录为错误。默认值:5(秒,浮点数)。

缓存

没有缓存,此模块运行缓慢(与其他任何与LDAP通信的模块一样)。

默认情况下,LDAP查询不会缓存。

对于生产环境来说,配置memcached服务器作为LDAP查询缓存是强制性的。

至少缓存6秒,这样即使在最坏情况下,也可以覆盖加载所有资源的页面。

默认情况下,请求会缓存UGM树,这意味着它从(缓存的)ldap查询构建。

还有一个可用的替代适配器,它将ugm树作为持久插件的易失性属性(_v_...)缓存。

易失性属性不会持久化到ZODB。如果插件对象从ZODB缓存中消失,则该属性也将消失。

可以通过加载其zcml文件来激活易失性插件缓存:<include package="pas.plugins.ldap" file="cache_volatile.zcml">

缓存时间可以通过覆盖 pas.plugins.ldap.cache.VOLATILE_CACHE_MAXAGE 的值来影响。

默认值为 10,单位为秒。

注意

将 UGM 树缓存超过一次请求的时间可能意味着它可能包含过时数据。

如果您计划使用不同的 UGM 树缓存实现,请提供自己的适配器,该适配器实现 pas.plugins.ldap.interfaces.IPluginCacheHandler

限制和未来优化

此包未在 Windows 上进行测试/开发。如果 python-ldap 被正确安装并被 buildout 识别,则可能在 Windows 上运行。

此包适用于数万个用户或组,除非您列出用户。

对于少量用户来说,这并不是一个大问题。在底层的 node.ext.ldap 中还有优化空间。

源代码

如果您想帮助开发(改进、更新、修复错误等)pas.plugins.ldap,这是一个很好的想法!

代码位于 GitHub Collective 上。

您可以克隆它或 访问 GitHub Collective 并直接在项目上工作。

维护者是 Robert Niederreiter、Jens Klein 以及 BlueDynamics Alliance 开发团队。

我们感谢任何贡献,如果需要在 PyPI 上发布版本,请随时联系我们之一:dev@bluedynamics dot com

贡献者

  • Jens W. Klein

  • Robert Niederrreiter

  • Florian Friesdorf

  • Daniel Widerin

  • Johannes Raggam

  • Luca Fabbri

待办事项

另请参阅 问题跟踪器

里程碑 2.0

  • 移除肖像 monkey 补丁

  • 添加/删除用户

  • 添加/删除组

  • 为只读组和用户添加标志

  • 仅从 ldap 添加/删除组或用户

  • SSL/TLS 配置 TTW

  • 创建默认 TTW

  • 组中的组(取决于:node.ext.ldap: group.groups 支持)(在 1.8.0 中为 AD 完成)

  • 从 ldap 获取角色

  • 在 LDAP 检查器中是否使用用户和组配置中的查询过滤器选项

历史

1.8.2 (2022-10-31)

  • 为 LDAP 服务器添加连接和操作超时属性。修复 问题 #61。 [mamico]

1.8.1 (2021-10-09)

  • 修复 Zope 5 和 Plone 6 的导入。 [pbauer]

1.8.0 (2020-06-11)

功能

  • 使用 LDAP_MATCHING_RULE_IN_CHAIN 支持在 AD 中的嵌套组。 [pbauer]

  • 使用 memberOf 属性时支持插件外部的组 DN。 [jensens]

1.7.2 (2020-02-21)

错误修复

1.7.1 (2020-02-14)

  • 使用插件 ID 而不是用户 ID 作为属性表 ID。修复 问题 #95。 [reinhardt]

  • 将成员角色授予所有 LDAP 用户。 [reinhardt]

1.7.0 (2020-01-22)

  • 修复了当“组容器 DN”字段提供错误值时,/plone_ldapcontrolpanel 的错误显示。 [alecghica]

  • 修复了添加 Plone 用户组时的错误。 [iulianpetchesi]

  • 将 LDAP 错误记录为错误级别,以便可以将它们记录到 Sentry 等。 [jensens]

  • 使用环境变量 PAS_PLUGINS_LDAP_ERROR_LOG_TIMEOUT 可配置地记录 LDAP 错误的超时。 [jensens]

  • 将长时间运行的 LDAP/ pas.plugin.ldap 操作记录为错误。阈值可以通过环境变量 PAS_PLUGINS_LDAP_LONG_RUNNING_LOG_THRESHOLD 控制。 [jensens]

1.6.2 (2019-09-12)

  • 从基本配置文件中删除损坏的旧导入步骤。修复 问题 #74。 [maurits]

  • 移除删除 time.clock() 的弃用警告,这将破坏 Python 3.8 支持。 [fredvd]

  • 需要python-ldap 3.2.0。修复了“initialize()遇到了意外的关键字参数‘bytes_strictness’”。[reinhardt]

1.6.1 (2019-05-07)

  • 优化ZMI视图以在Zope 4上看起来更好。[jensens]

  • 修复了#71,node.ext.ldap版本要求错误。[jensens]

1.6.0 (2019-05-07)

  • 修复检查器:在Python 3中,JSON.dumps不接受bytes作为键。[jensens, 2silver]

  • 在属性表上显式设置ID,而不是在读取时写入。[jensens, 2silver]

  • 减少伪错误的插件日志的冗余。[jensens, 2silver]

  • 如果没有要求精确匹配,则启用用户的部分搜索。[jensens]

  • 按需添加最新YAFOWIL的包。[jensens]

  • 放弃对Plone 4.3的支持。[jensens]

  • plugin.py的doctests转换为unittests。[jensens]

  • 采用Black代码风格。[jensens]

  • 修复#51:plone_ldapinspector由于UnicodeDecodeError而损坏。[dmunico]

  • 使绑定用户和密码可选。[thet, jensens]

  • Python 3支持

    • 修复了导入

    • 文本/编码修复

    • 修复了异常处理

    • 使用node.ext.ldap的Py23DocChecker修改了打乱的doctests

    • 简化yaml配置中的object_classes表达式

    [reinhardt]

1.5.3 (2017-12-15)

  • 从UGM principal search调用中删除了手动LDAP搜索分页。从node.ext.ldap 1.0b7开始,这是在下游API中完成的。[rnix]

  • 修复测试:注册PlonePAS的插件类型。[jensens, fredvd, mauritsvanrees]

  • 彻底重构测试设置(travis)。[jensens]

1.5.2 (2017-10-20)

  • 在表定义中将memcached TTW设置设置为unicode,这样您就可以在更改此字段时保存控制面板表单。[fredvd]

  • 改进README。[svx]

1.5.1 (2016-10-18)

  • 修复:TTW设置中的page_size导致浮点值。现在将表单数据类型设置为整数。感谢 @datakurre 报告![jensens]

1.5 (2016-10-06)

  • 无更改。

1.5b1 (2016-09-09)

  • GroupEnumeration分页。[jensens]

  • UserEnumeration分页。[jensens]

  • 添加page_size服务器属性。[jensens]

  • 修复LDAP检查。[jensens]

  • 将Plone 4和5的配置文件分开。[jensens]

  • 修复Plone 5的测试。[jensens]

  • 修复了未处理的LDAP错误。这防止了插件安装后网站损坏。[keul]

  • 采用LDAP检查器使用DN而不是RDN进行节点标识。[rnix]

  • UsersConfigGroupsConfig适配器添加了dummy defaults设置。这些默认值用于设置子创建默认值,因此具体实现被推迟到用户和组通过Plone UI创建时。[rnix]

  • LDAPProps适配器添加了ignore_cert设置。[rnix]

  • 删除了不再可用的check_duplicates设置。[rnix]

  • 使用node.ext.ldap 1.0b1。[rnix]

  • 通过使用node.ext.ldap >=1.0a1,预计将获得主要速度提升。[jensens]

  • 使用实现者装饰器以提高可读性。[jensens]

  • 将setuptools升级到v7.0。[jensens]

1.4.0 (2014-10-24)

  • 功能:在插件上使用替代的易失性缓存来存储UGM树。[jensens]

  • 彻底重构测试设置。[jensens]

  • 在ugm-tree级别引入可插拔的缓存机制,默认为请求缓存。可以通过提供实现pas.plugins.ldap.interfaces.IPluginCacheHandler的适配器来覆盖。[jensens]

  • 记录构建用户或组树所需的时间。[jensens]

1.3.2 (2014-09-10)

  • 检查器中的小修复。[rnix]

1.3.1 (2014-08-05)

  • 修复依赖项版本。[rnix]

1.3.0 (2014-05-12)

  • 当密码更改方法无法在LDAP树中找到用户时,引发RuntimeError而不是KeyError。可能它是一个本地用户,并且Products.PlonePAS.pas.userSetPassword期望在这种情况下引发RuntimeError。[saily]

1.2.0 (2014-03-13)

  • 添加属性check_duplicates。添加了禁用LDAP中键的重复检查的能力,以避免如果LDAP结构不完美而导致失败。

  • 添加新属性以禁用LDAP树中主/次键的重复检查。这允许pas.plugins.ldap读取LDAP树并忽略重复项,而不是引发

    Traceback (most recent call last):
    ...
    RuntimeError: Key not unique: <key>='<value>'.

1.1.0 (2014-03-03)

  • 如果LDAP不可达,LDAP错误不会阻塞太多,以前超时会导致整个Zope阻塞。现在重试的默认超时时间为300秒,并对代码进行了清理[jensens]

  • 使用更现代的基础进行测试[jensens]

  • 将URL示例添加到小部件帮助信息中,说明如何指定LDAP URI。[saily]

  • 添加新的Bootstrap v2 [saily]

1.0.2

  • 有时LDAP返回一个空字符串作为肖像。将其视为没有肖像[jensens, 2013-09-11]

1.0.1

  • 由于密码重置问题,我们了解到pas searchUsers在调用插件搜索时使用了登录名和名称,这被传递给ugm并始终返回空结果[benniboy]

1.0

  • 使其工作。

  • 到目前为止在bda.pasldapbda.plone.ldap中完成的基础工作已合并。

许可证

版权(c)2010-2020,BlueDynamics Alliance,奥地利,德国,瑞士。保留所有权利。

在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改:

  • 源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。

  • 二进制形式的重新分发必须在文档和/或与分发一起提供的其他材料中重新生产上述版权声明、本条件列表和以下免责声明。

  • 未经BlueDynamics Alliance的书面事先许可,不得使用BlueDynamics Alliance的名称或其贡献者的名称来认可或推广由此软件派生的产品。

本软件由BlueDynamics Alliance“按原样”提供,并且不承担任何明示或暗示的保证,包括但不限于适销性和特定目的的适用性的暗示保证。在任何情况下,BlueDynamics Alliance均不对因使用本软件而直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代商品或服务的采购;使用、数据或利润的丧失;或业务中断)承担责任,即使已告知此类损害的可能性。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装软件包的更多信息。

源代码分发

pas.plugins.ldap-1.8.2.tar.gz (47.4 kB 查看散列值)

上传时间

构建分发

pas.plugins.ldap-1.8.2-py3-none-any.whl (50.5 kB 查看散列值)

上传于 Python 3

由以下提供支持