一种python/django活动目录组管理抽象,使用ldap3作为后端以实现跨平台兼容性。

ldap-groups的Python项目详细描述


一个python/django活动目录组管理抽象,它使用ldap3作为后端实现跨平台兼容性。


图片::https://img.shields.io/travis/kavdev/ldap-groups/master.svg?style=flat square
:目标:https://travis ci.org/kavdev/ldap groups
…图片::https://img.shields.io/codecov/c/github/kavdev/ldap-groups/master.svg?style=flat square
:目标:http://codecov.io/github/kavdev/ldap-groups?分支=主
…图片::https://img.shields.io/requires/github/kavdev/ldap-groups.svg?style=flat square
:目标:https://requires.io/github/kavdev/ldap-groups/requirements/?分支=主
…图片::https://img.shields.io/codacy/f8b8c71b805e4585b8c34ba7c02fbd0c.svg?style=flat square
:目标:https://www.codacy.com/app/kavdev/ldap groups/dashboard

…图片::https://img.shields.io/pypi/v/ldap-groups.svg?style=flat square
:目标:https://pypi.python.org/pypi/ldap groups
…图片::https://img.shields.io/pypi/dw/ldap-groups.svg?style=flat square
:目标:https://pypi.python.org/pypi/ldap groups

…图片::https://img.shields.io/github/issues/kavdev/ldap-groups.svg?style=flat square
:目标:https://github.com/kavdev/ldap groups/issues
。图片::https://img.shields.io/github/license/kavdev/ldap-groups.svg?style=flat square
:目标:https://github.com/kavdev/ldap groups/blob/master/license

installation
----


代码块::bash


代码::python

installed_apps=(

‘ldap_groups’,



django settings
----


在运行ldap组之前,必须配置一些设置。

*强制*

*`‘ldap_groups’_ uri``—LDAP服务器的uri,例如'ldap://example.com'
*``ldap-groups-base-dn`—基本搜索dn,例如'dc=example,dc=com'

*可选*

*``ldap-groups-bind-dn`—绑定用户的dn
*``ldap-groups-bind-password`—绑定用户的密码

nd user是可选的,许多服务器的安全设置将拒绝匿名访问。

*`` ldap_groups_user_lookup_attribute``查找用户时要搜索的属性(应该是唯一的)。默认为`'samaccountname``.
*`` ldap_groups_user_search_base_dn``查找用户时要使用的基本dn。默认为"ldap-groups-base-dn`.
*``ldap-groups-group-lookup-attribute``-查找组时要搜索的属性(应该是唯一的)。默认为`` name``.
*`` ldap_groups_group_search_base_dn``查找组时使用的基本dn。默认为"ldap-groups-base-dn"。
*`"ldap-groups-attribute-list`-在提取组成员时为每个成员返回的属性列表。空列表应返回所有属性。默认为`['displayname','samaccountname','distinguishedname']`.

usage
----


>在当前状态下,LDAP组可以执行以下功能:



*获取组的特定属性
*以字典形式获取组的所有属性
*get all m组的成员及其属性(用户)
*向组添加成员(用户)
*从组中删除成员(用户)
*向组添加子级(嵌套组)
*从组(嵌套组)中删除子级
*获取组(组和组织单位)的所有子级
*get一个组的所有子组(组和组织单位)
*遍历一个组的特定子组
*遍历一个组的父组
*遍历一个组的祖先




实例只需要一个参数就可以运行:一个组的可分辨名称。
一旦adgroup被实例化,剩下的就相当简单:

。代码::python


self.ad_group_instance=adgroup(group_dn)

def add_member(self):
self.ad_group_instance.add_member(account_name)

def remove_member(self):
self.ad_group_instance.remove_member(account_name)

返回self.ad_group_instance.get_member_info()



class adgroupinfo(object):


def_u init_u(self):
self.ad_group_instance=adgroup(group_dn)

def get_attributes(self):
返回self.ad_group_instance.get_attributes()

def get戋name(self):
返回self.ad戋group戋instance.get戋attribute(name戋attribute)

def get戋type(self):
返回self.ad戋group戋instance.get戋attribute(type戋attribute)

文档/
代码::python


"获取此组的传递属性。

:param attribute_name:要获取的属性的名称。
:type attribute_name:str
:param no_cache(可选):设置为如果为true,则直接从LDAP搜索而不是从缓存中提取属性。默认为False。
:键入no_cache:boolean

:返回:请求的属性,如果未设置属性,则返回none。

"


def get_attribute s(no_cache=False):
"返回此组属性的字典。此方法在第一次搜索后缓存属性,除非未指定任何缓存。

:param no_cache(可选):设置为true可直接从LDAP搜索而不是从缓存中提取属性。默认值为False
:键入no_cache:boolean

"

"搜索组并检索其成员。

:param page_size(可选):许多服务器对可重新搜索的结果数有限制。瑞德页面搜索绕过了这个限制。将页面大小调整为低于服务器的大小限制。(默认值:500)
:键入页面大小:int

"


def get_member_info(页面大小=500):
"从AD组对象检索成员信息。

:参数页面大小(可选):许多服务器对可以是r的结果数有限制铺展了。页面搜索绕过了这个限制。将页面大小调整为低于服务器的大小限制。(默认值:500)
:键入page-size:int

:返回基于ldap-groups属性列表设置或attr-list参数的广告组成员信息字典。

"

def get-tree-members():
"检索所有成员从树的此节点向下。"

def add_member(user_lookup_attribute_value):
"尝试将成员添加到AD组中。

:param user_lookup_attribute_value:ldap_group_user_lookup_attribute的值。
:键入user_lookup_attribute。_值:str

:如果提供的帐户不在活动目录中,则引发:**accountdoesnotexist**。(继承自_get_user_dn)
:如果帐户已存在于此组中,则引发:**entryalreadyexists**。(modificationfailed的子类)
:如果绑定用户没有权限,则引发:**权限不足**要修改此组。(modificationfailed的子类)
:如果由于不可预见的原因无法执行修改,则引发:**modificationfailed**。

"


>def remove_member(user_lookup_attribute_value):
"尝试从AD组中删除成员。

:param user_lookup_attribute_value:ldap_groups_user_lookup_attribute的值。
:键入user_lookup_attribute_value:str

:如果提供的帐户不在活动目录中,则引发:**accountdoesnotexist**。(继承自"获取用户"DN)
:如果绑定用户没有修改此组的权限,则引发:**权限不足**。(modificationfailed的子类)
:如果由于不可预见的原因无法执行修改,则引发:**modificationfailed**。





def add_child(group_lookup_attribute_value):
尝试将子类添加到AD组。

:param group_lookup_attribute_value:LDAP_groups_group_lookup_attribute的值。
:键入group_lookup_attribute_value:str

:如果提供的组不在活动目录中,则引发:**groupdoesnotexist**。(继承自'u get_group_dn)
:如果此组中已存在子项,则引发:**entryalreadyexists**。(modificationfailed的子类)
:如果绑定用户没有修改此组的权限,则引发:**insufficientpermissions**。(modificationfailed的子类)
:如果由于不可预见的原因无法执行修改,则引发:**modificationfailed**。




def remove_child(group_lookup_attribute_value):
尝试从AD组中删除子项。

:param group_lookup_attribute_value:ldap_group_lookup_attribute的值。
:键入group_lookup_attribute_value:str

:如果提供的组不在活动目录中,则引发:**groupdoesnotexist**。(继承自'u get_group_dn)
:如果此组中已存在子项,则引发:**entryalreadyexists**。(modificationfailed的子类)
:如果绑定用户没有修改此组的权限,则引发:**insufficientpermissions**。(modificationfailed的子类)
:如果由于不可预见的原因而无法执行修改,则引发:**modificationfailed**。

"


def get_denscents(page_size=500):
"返回此组的所有子代的列表。

:param页面大小(可选):许多服务器对可返回的结果数有限制。页面搜索绕过了这个限制。将页面大小调整为低于服务器的大小限制。(默认值:500)
:键入page-size:int

"


def get-u children(page-size=500):
"返回此组的子级列表。

:param page-size(可选):许多服务器对可返回的结果数有限制。页面搜索绕过了这个限制。将页面大小调整为低于服务器的大小限制。(默认值:500)
:键入page-size:int

"


def child(group-name,page-size=500):
"返回与提供的组名匹配的子广告组,如果子组不存在,则返回"无"。

:param group-name:子组的名称p.注意:名称不包含"cn="或"ou="
:类型组名:str
:参数页大小(可选):许多服务器对可返回的结果数有限制。页面搜索绕过了这个限制。将页面大小调整为低于服务器的大小限制。(默认值:500)
:键入页面大小:int

"


def parent():
""返回此组的父级(直到DC)"

def祖先(generation):
"返回给定一代(直到dc)的此组的祖先"。

:param generation:确定路径上的距离。示例:0=self,1=parent,2=grandrent…
:类型生成:int

"


ing参数:

…代码::python

adgroup(group_dn,server_uri,base_dn[,user_lookup_attr[,group_lookup_attr[,attr_list[,bind_dn,bind_password[,user_search_base_dn[,group_search_base_dn]]]]])


*`` group_dn`-要管理的组的可分辨名称。
*`` server_uri`-ldap服务器的uri,例如"ldap://example.com"
*``base``基本搜索dn,例如"dc=example,dc=com"
*``用户查找attr``查找用户时要搜索的属性(应该是唯一的)。默认为`'samaccountname``.
*`` group_lookup_attr``查找组时搜索的属性(应该是唯一的)。默认为``name``.
*``attr_list``-在提取组成员时为每个成员返回的属性列表。空列表应返回所有属性。默认为`['displayname','samaccountname','distinguishedname']`.
*``bind`u dn`-绑定用户的dn
*``bind`u password`-绑定用户的密码
*``user`search`u base`dn`-查找用户时要使用的基本dn。默认为"ldap-groups-base-dn"。
*`"group-search-base-dn`-查找组时要使用的基本dn。默认为"ldap-groups-base-dn"。

代码块::bash
./runtests.py







===



4.2.2(2016-09-14)
----

*添加了对使用adgroup作为上下文管理器的支持2


4.2.1(2015-12-23)
——————————————————————————————————————————————————————————————————————————————————不返回任何内容。(感谢@willson556)


4.2.0(2015-09-01)
----


*添加了get-tree-members方法


4.1.1(2015-08-28)
----


*更新了依赖项,转义查询错误修复

<4.1.0(2015-03-25)
----



现在,根据LDAP规范(除NUL字符外)重新正确转义

4.0.0(2014-11-10)
----


*添加了配置搜索基的功能,按现在指定的属性搜索用户/组
*添加了子添加/删除方法,重构了方法/类签名,添加属性缓存,所有查找现在都分页


3.0.4(2014-10-20)
----


*错误修复,重构


3.0.3(2014-10-13)
----


*错误修复


3.0.2(2014-10-08)
----


*错误修复


<3.0.1(2014-10-08)
----


*错误修复


3.0.0(2014-10-03)
----


*切换到python3 ldap


>2.5.3(2014-09-15)
----


*固定子搜索,添加自定义搜索功能

<2.5.2(2014-09-04)
--

*固定问题2,固定自述示例

2.5.1(2014-08-31)
----

*固定python ldap依赖关系限制(现在>;=)


2.5.0(2014-08-30)
----


*添加组属性和树遍历方法

2.0.0(2014-08-30)
-------

*删除了django依赖项


1.0.1(2013-09-05)
-------


*错误修复-不存在的用户也可以抛出类型错误


1.0.0(2013-08-26)
-------

*租赁

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

推荐PyPI第三方库


热门话题
java如何在wix中为TARGETDIR和SourceDir提供路径?   java在custom starter中访问spring应用程序名称   没有构建带有ActionBarSherlock的java Android项目   java按钮边框不显示   JavaSpring:从表单数据获取文件输入流   javascript通知侦听器服务   java在Junit测试时遇到异常   java从文件中读取特定值   JavaFX:在很短的时间内隐藏窗格   如何在Docker中使用用户定义的引用类来容器化Java应用程序?   java如何更改项目的编译SDKversion?   是否有任何java/spring方法可以使用HttpServletRequest存储当前登录用户的会话信息?   Java中的双大于号(>>)?   Java阵列2x2及其工作原理   java Spring引导ddl自动生成器   java如何利用大量数据传输优化服务器客户端应用程序?   java在使用Windows的FLAG_全屏时ICS和Jelly Bean之间的不同行为   java如何获取当前在回收器视图的线性布局中不可见的视图