环境:python - 3.6.6django - 2.x.xdjango-auth-ldap - 2.0.0 python-ldap - 3.2.0代码:import ldapfrom django_auth_ldap.backend import LDAPBackend, _LDAPUser, LDAPSearchuser = _LDAPUser(LDAPBackend(), "any") # just for getting root connection to LDAPsearch = LDAPSearch( "ou=Some,dc=some,dc=some,dc=some", ldap.SCOPE_SUBTREE, "???? what should be here ???" # criteria, I guess)# list of users is expected, or at least user's namesresult = search.execute(user.connection) 问题:如何为获取用户列表构建正确的标准(或如何正确调用它)?(链接会很棒)有可能吗?解决方案(不用于生产,只是工作草图):# based on https://medium.com/@alpolishchuk/pagination-of-ldap-search-results-with-python-ldap-845de60b90d2import ldapfrom ldap.controls import SimplePagedResultsControlfrom django_auth_ldap.backend import LDAPBackend, _LDAPUseruser = _LDAPUser(LDAPBackend(), "any")connect = user.connectionpage_control = SimplePagedResultsControl(True, size=2, cookie='')result = []fuse = 2while True: fuse -= 1 if fuse < 0: break response = connect.search_ext( "ou=some,dc=some,dc=some,dc=some", ldap.SCOPE_SUBTREE, "(objectClass=inetorgperson)", [], serverctrls=[page_control] ) rtype, rdata, rmsgid, serverctrls = connect.result3(response) result.extend(rdata) controls = [control for control in serverctrls if control.controlType == SimplePagedResultsControl.controlType] if not controls: print("The server ignores RFC 2696 control") break if not controls[0].cookie: break page_control.cookie = controls[0].cookie
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
您的环境中可能涉及许多不同的场景。
LDAP 中有多少用户?
哪个 LDAP 服务器实现?(微软活动目录?)
您可能需要使用Simple Paged Results 控件。
至于过滤器,有一些Microsoft Active Directory的示例
对于(不是广告)一些简单的事情,比如
(objectClass=inetorgperson)
应该足够了。
添加回答
举报
0/150
提交
取消