LDAP Plugin for Repoze.who

who_ldap的Python项目详细描述


谁的ldap

支持repoze.who-v2的wsgi应用程序的ldap身份验证

此项目是要支持的原始repoze.who.plugins.ldap的分支。 世卫组织API v2以及Python3(和2.7)

who_ldap 用于标识和 wsgi应用程序的身份验证框架, repoze.who ,充当wsgi 中间件。

安装

pip install who_ldap

安装主线开发分支

插件托管在github.com上的git分支中。获取最新消息 代码,运行:

git clone git@github.com:m-martinez/who_ldap.git

然后运行下面的命令:

pip install -e who_ldap/

使用LDAP验证器设置repoze.who

本节介绍如何设置repoze.who来使用LDAP插件 在您的wsgi应用程序中。它基于repoze.who的文档。

您可以使用 两种方法:使用ini文件或python代码。

在下面的例子中,我们只使用 包:LDAP身份验证器本身( ldapauthenticatorplugin )。这个 其他插件不处理身份验证,但可以自动加载 与LDAP服务器中经过身份验证的用户相关的数据。

使用repoze.who术语,ldapauthenticatorplugin是 authenticator plugin 和其他的是元数据提供程序插件

在ini文件中配置repoze.who

您可以通过 *.ini 文件配置基于 的repoze.who 身份验证, 然后在应用程序中加载这些设置。

假设我们有一个名为who.ini的文件,其内容如下:

# These contents have been adapted from:
# http://static.repoze.org/whodocs/#middleware-configuration-via-config-file
[plugin:form]
use = repoze.who.plugins.form:make_plugin
rememberer_name = auth_tkt

[plugin:auth_tkt]
use = repoze.who.plugins.auth_tkt:make_plugin
secret = something

[plugin:ldap_auth]
use = who_ldap:LDAPAuthenticatorPlugin
url = ldap://ldap.yourcompany.com
base_dn = ou=developers,dc=yourcompany,dc=com

[general]
request_classifier = repoze.who.classifiers:default_request_classifier
challenge_decider = repoze.who.classifiers:default_challenge_decider

[identifiers]
plugins =
    form;browser
    auth_tkt

[authenticators]
plugins =
        ldap_auth

[challengers]
plugins =
    form;browser

使用上述设置,通过 repoze.who 进行身份验证的配置方式如下: 访问者将使用表单登录,并提供用户名和密码;然后 将对照ldap服务器ldap.yourcompany.com检查这些凭据。 在 ou=developers,dc=yourcompany,dc=com 下。将显示此表单 当您的wsgi应用程序发出http 401 错误时。

例如,如果用户输入 jsmith 作为用户名,输入 valencia 作为他们的 密码,LDAP验证器将其可分辨名称(DN)构建为 uid=jsmith,ou=developers,dc=yourcompany,dc=com 使用此dn和 瓦伦西亚 作为密码。

最后,您可以通过将 repoze.who 中间件添加到 应用程序:

from repoze.who.config import make_middleware_with_config
app_with_auth = make_middleware_with_config(app, global_confg, '/path/to/who.ini')

在repoze.who的文档中,有一个更详细的解释 对于ini文件方法。

特定于框架的文档

您可能需要查看以下特定于框架的文档以了解提示 如何在您使用的框架中实现repoze.who < Buff行情>

  • 金字塔 金字塔
  • 挂架 使用repoze.who
  • 涡轮齿轮2:/auth/index.html" rel="nofollow">涡轮齿轮2中的身份验证和授权 ( repoze.who 是默认的身份验证库)。

使用LDAP插件进行repoze.who

ldapauthenticatorplugin

此插件连接到指定的LDAP服务器,并尝试使用 可分辨名称 (dn)通过在 标识中加入 登录名 而生成 字典作为命名属性值和 构造函数,然后尝试与 identity dictionary;默认情况下,used naming属性是 用户ID( uid )。

例如,如果标识符提供的 登录名是 carla 并且 构造函数中提供的基础是 ou=employees,dc=example,dc=org, 得到的dn将是 uid=carla,ou=employees,dc=example,dc=org

如果目录服务器的命名属性是 email 属性, 我们在构造函数dn中提供了命名属性'email' 对于标识符carla@example.org的结果是 email=carla@example.org,ou=employees,dc=example,dc=org

要从ini文件配置此插件,必须包含一个部分 像这样:

[plugin:ldap_auth]
use = who_ldap:LDAPAuthenticatorPlugin
url = ldap://yourcompany.com
base_dn = ou=employees,dc=yourcompany,dc=com
naming_attribute = uid
start_tls = True
<表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 设置 默认值 说明 < /广告> <正文> 网址 必需的 连接URL 基础 > 开始查询的位置 返回的 DN 要在身份验证时返回的属性("dn"或"login") 启动TLS 错误 如果已设置,则在连接上启动TLS 命名属性 uID 目录项的命名属性 <表>

ldapsearchauthenticatorplugin

此插件连接到指定的LDAP服务器并搜索一个条目 位于其命名属性值等于 到提供的登录名。如果找到这样的条目,它将尝试绑定为 在 标识 字典中找到带有 密码 的条目dn;作为 默认情况下,使用的命名属性是用户id( uid )。

构造函数中的 search_scope 参数允许选择 在整个子树中搜索基目录下的条目,或仅在 如果设置为 search_scope="onelevel" ,则下面的级别

例如,如果标识符提供的 登录名是 carla 并且 构造函数中提供的基础是 dc=example,dc=org , 使用默认设置,系统可以找到条目 uid=carla,ou=employees,dc=example,dc=org ;如果我们设置 搜索"scope="onelevel" ,将找不到条目。

如果只允许某些条目,可以设置筛选器 通过 filterstr 参数,该参数的格式为 定义方式:RFC 4515-轻量级目录访问协议(LDAP):字符串 搜索筛选器的表示形式。 例如,我们只能断言带有电话号码开头的个人条目 使用 999111 可以通过设置登录: 过滤器tr='(&;(objectclass=person)(电话号码=999111*))' 在构造器中。

要从ini文件配置此插件,必须包含一个部分 像这样:

[plugin:ldap_auth]
use = who_ldap:LDAPSearchAuthenticatorPlugin
url = ldap://yourcompany.com
base_dn = ou=employees,dc=yourcompany,dc=com
naming_attribute = uid
search_scope = subtree
start_tls = True

最后,添加插件到身份验证器集:

[authenticators]
plugins =
        ldap_auth
<表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 设置 默认值 说明 < /广告> <正文> 网址 必需的 连接URL 绑定 > 操作用户 绑定过程 > 操作用户密码 基础 > 开始查询的位置 返回的 DN 要在身份验证时返回的属性("dn"或"login") 启动TLS 错误 如果已设置,则在连接上启动TLS 命名属性 uID 目录项的命名属性 搜索范围 子树 LDAP搜索的范围("子树"或"一级") 限制 > 用于搜索的可选附加筛选器 <表>

ldapAttributesPlugin

此插件允许您为经过身份验证的用户加载数据 自动并从wsgi环境中获得它-在 标识 字典,具体来说。

属性 表示 要从LDAP获取的用户属性列表 服务器;它可以是iterable,一个字符串,其中的属性是分开的 通过逗号,或 none 获取所有可用属性。

默认情况下,它加载 任何 dn 为 与ldapauthenticatorplugin发现的相同,即 在大多数情况下都需要。 但是,如果要排除某些条目,可以设置筛选器 通过 filterstr 参数,它共享相同的语义 作为 ldapsearchauthenticatorplugin 中的 filterstr 参数

要从ini文件配置此插件,必须包含一个部分 像这样:

[plugin:ldap_attributes]
use = who_ldap:LDAPAttributesPlugin
url = ldap://ldap.yourcompany.com
attributes = cn,sn,mail

如果不加载 公共名称 姓氏 电子邮件 ,则与 上面的设置,您希望加载 经过身份验证的用户,您只需删除 属性 指令即可。

最后,将插件添加到元数据提供程序集:

pip install who_ldap
0 <表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 设置 默认值 说明 < /广告> <正文> 网址 必需的 连接URL 绑定 > 操作用户 绑定过程 > 操作用户密码 基础 > 开始查询的位置 启动TLS 错误 如果已设置,则在连接上启动TLS 属性 > 要使用的LDAP属性。 可以是一个简单的逗号分隔列表(例如uid、cn)。 或映射列表(例如,cn=fullname,mail=email)。 过滤器tr (对象类=*) 搜索的筛选器 扁平化 错误 如果LDAP值不是列表,则清除它们 <表>

ldapgroupsplugin

此插件允许您加载经过身份验证的 用户,

<表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 设置 默认值 说明 < /广告> <正文> 网址 必需的 连接URL 绑定 > 操作用户 绑定过程 > 操作用户密码 基础 > 开始查询的位置 启动TLS 错误 如果已设置,则在连接上启动TLS 过滤器tr > 搜索的筛选器(默认行为: (&;(objectClass=groupofuniquenames)(唯一成员=%(dn)s)) 姓名 > 要使用的标识中的属性名 搜索范围 子树 LDAP搜索的范围("子树"或"一级") 返回的 Cn 要返回组条目的哪个属性值 <表>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从通知中获取图像?   java按住按钮将循环一个动作,直到它被释放   JavaJavassist:如何将动态生成的类添加到特定的包中?   java我需要获取一个字符串并输出字符串中出现最多的单词   java合并排序堆栈溢出错误   java如何使用spring boot配置hibernate   Android中带选择器的Java TCP服务器NIO   java对于长度急剧变化的输入,什么是最佳的StringBuffer初始容量?   java SpringBoot:REST endpint中@RequestParam参数的自定义验证   JavaJPaQuery。fetchResults()已弃用,应如何替换它?   JavaJNA结构创建带来麻烦   java创建只包含响应中某些元素的POJO   java巨大的Perm Gen与应用程序大小相比,是否正常?   JavalibgdxMoveToAction。将setPosition()设置为负坐标,以将演员移出舞台