跳转到主要内容

devpi-ldap:为devpi-server提供LDAP身份验证

项目描述

devpi-ldap:为devpi-server提供LDAP身份验证

Latest Version

适用于devpi-server >= 2.1.0。

安装

devpi-ldap 需要与 devpi-server 一起安装。

您可以使用以下命令进行安装

pip install devpi-ldap

对于 devpi-server,无需配置即可激活插件,因为它将通过使用setuptools入口点机制调用钩子自动发现插件。但是,您需要通过命令行选项 --ldap-config 将包含YAML配置文件的路径传递给 devpi-server

以下是LDAP配置的详细信息。

配置

可以使用名为 devpi-ldap 的脚本来测试您的LDAP配置。

要配置LDAP,创建一个包含以下选项的字典的yaml文件,并在 devpi-ldap 键下创建另一个字典

url

LDAP服务器的URL。使用ldaps://启用SSL。目前不执行证书验证。

tls

用于传输层安全(TLS)的ldap3.Tls对象的参数,用于LDAPS连接。

server_pool

LDAP池服务器的列表。必须选择server_poolurl之一,但不能同时选择。列表条目本身是一个包含必选url项和可选tls项的字典。

user_template

生成用户唯一名称的模板。如果结构固定,这比指定user_search更快,但devpi-server无法知道用户是否存在。

user_search

如果您不能或不想使用user_template,那么这是用于用户唯一名称的搜索设置。您可以在搜索过滤器中使用username。具体细节见下文。

group_search

用于用户组对象的搜索设置。您可以在搜索过滤器中使用usernameuserdn(唯一名称)。具体细节见下文。

referrals

是否跟随引用。在使用Windows上的Active Directory通过LDAP时,在许多情况下需要将此设置为false。默认为true

reject_as_unknown

将所有失败的认证尝试报告为unknown而不是reject。这在例如使用提供的凭据绑定到ldap时很有用,在这种情况下,我们无法区分认证失败和未知用户。需要unknown以让其他认证钩子尝试认证用户。

timeout

连接到LDAP服务器的超时时间。默认为10秒。

user_searchgroup_search设置是包含以下选项的字典

base

从该基础位置进行搜索。

filter

搜索过滤器。要使用替换,请将它们放在大括号中。例如:(&(objectClass=group)(member={userdn}))

scope

搜索范围。有效值是base-objectsingle-levelwhole-subtree。默认为whole-subtree

attribute_name

包含用于检查用户密码的用户DN的属性的名称。devpi-ldap将从搜索结果中提取此属性并尝试使用此DN和用户提供的密码绑定到LDAP服务器。如果此绑定成功,则授予访问权限。

userdn

用于搜索操作的用户唯一名称。对于user_search,如果您没有匿名用户搜索或对于group_search,如果用户不能搜索自己的组,则需要将此设置为具有必要权限的用户。

password

userdn中的用户密码。

YAML文件应类似于以下内容

---
devpi-ldap:
  url: ldap://example.com
  user_template: CN={username},CN=Partition1,DC=Example,DC=COM
  group_search:
    base: CN=Partition1,DC=Example,DC=COM
    filter: (&(objectClass=group)(member={userdn}))
    attribute_name: CN

具有用户搜索和Active Directory的示例可能如下所示

---
devpi-ldap:
  url: ldap://example.com
  user_search:
    base: CN=Partition1,DC=Example,DC=COM
    filter: (&(objectClass=user)(sAMAccountName={username}))
    attribute_name: distinguishedName
  group_search:
    base: CN=Partition1,DC=Example,DC=COM
    filter: (&(objectClass=group)(member={userdn}))
    attribute_name: CN

具有服务器池的示例可能如下所示

---
devpi-ldap:
  server_pool:
    - url: ldap://server1.example.com:389
    - url: ldap://server2.example.com:3268
    - url: ldaps://server3.example.com:636
      tls:
        validate: 2 # ssl.CERT_REQUIRED
        ca_certs_file: /etc/ssl/certs/ca-certificates.crt
    - url: ldaps://server4.example.com:3269
      tls:
        validate: 2 # ssl.CERT_REQUIRED
        ca_certs_file: /etc/ssl/certs/ca-certificates.crt
  user_search:
    base: CN=Partition1,DC=Example,DC=COM
    filter: (&(objectClass=user)(sAMAccountName={username}))
    attribute_name: distinguishedName
  group_search:
    base: CN=Partition1,DC=Example,DC=COM
    filter: (&(objectClass=group)(member={userdn}))
    attribute_name: CN

变更日志

2.1.1 - 2023-08-07

  • 在调用LDAP search方法之前使用escape_filter_chars。 [mr-scrawley (Micha Schmierer),fschulze]

2.1.0 - 2021-12-04

  • 修复问题#50:新的server_pool设置。

2.0.0 - 2021-05-16

  • 为LDAP连接添加timeout选项。默认为10秒。

  • 使用 safe_load 读取 YAML 配置。

  • 默认情况下,reject_as_unknown 选项现在为 true。

  • 取消对 Python < 3.6 的支持,Python 3.x 的支持将随其各自的 EOL 结束。

  • 修复与 devpi-server 6.0.0 的弃用警告。

  • 修复 pluggy 弃用警告。

  • 至少需要 devpi-server 5.0.0。

1.2.2 - 2018-05-28

  • 更多的 ldap3 2.x 修复。[fschulze]

1.2.1 - 2018-05-25

  • 修复与 ldap3 2.x 的兼容性。[fschulze, abrasive (James Laird-Wah)]

  • 停止使用 Python 2.6 进行测试,但没有进行任何破坏兼容性的更改。

1.2.0 - 2016-03-25

  • 在配置中添加对 TLS 参数的支持。[jaraco (Jason R. Coombs)]

  • 允许通过 python -m devpi-ldap 调用,并修复 Python 3 的 cli。[jaraco]

  • 在身份验证失败时向测试脚本添加退出代码。[jaraco]

1.1.1 - 2016-01-28

  • 设置 ldap3 库的最低版本,该版本添加了在调试日志中隐藏密码的功能。[cannatag (Giovanni Cannata), rodcloutier (Rodrigue Cloutier), fschulze]

  • 更改 ldap 库的依赖关系,该库已被重命名。[kumy]

  • 修复问题 #5:dn 和 distinguishedName 可能会出现在顶级响应属性中,而不是属性列表中。[kainz (Bryon Roché)]

  • 修复问题 #24:忽略额外的搜索结果数据。[bonzani (Patrizio Bonzani), fschulze]

1.1.0 - 2014-11-10

  • 添加 reject_as_unknown 选项。[davidszotten (David Szotten)]

1.0.1 - 2014-10-10

  • 修复插件钩子。[fschulze]

1.0.0 - 2014-09-22

  • 初始发布。[fschulze (Florian Schulze)]

项目详情


下载文件

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

源分布

devpi-ldap-2.1.1.tar.gz (15.0 kB 查看哈希值)

上传时间

构建分布

devpi_ldap-2.1.1-py2.py3-none-any.whl (8.5 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面