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/> <广告> 设置 默认值 说明 < /广告> <正文> 网址
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/> <广告> 设置 默认值 说明 < /广告> <正文> 网址
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_ldap0 <表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 设置 默认值 说明 < /广告> <正文> 网址
ldapgroupsplugin
此插件允许您加载经过身份验证的 用户,
<表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 设置 默认值 说明 < /广告> <正文> 网址