无论如何都要获取用户更改的属性而不是所有用户属性?
import ldap
l = ldap.initialize("ldap://localhost")
l.protocol_version = 3
l.bind_s("cn=admin,dc=example,dc=org", "admin")
r = l.search_ext("dc=example,dc=org", ldap.SCOPE_SUBTREE, "(objectClass=*)")
print("Result", l.result3(r))
答案 0 :(得分:0)
要解决此问题,您需要通过在搜索查询末尾添加+
符号来获取openldap内部字段,如下所示:
$ ldapsearch -h localhost -w 'admin' -x -D "cn=admin,dc=example,dc=org" -b "DC=example,DC=org" +
在python代码中它会这样:
r = l.search_ext("dc=example,dc=org", ldap.SCOPE_SUBTREE, "objectClass=*", ["+",], 0)
然后返回内部字段,这些字段很重要,如modifyTimestamp
。
或者,如果您想在一个请求中获取所有内部字段和用户属性,只需添加'*' '+'
,如下所示:
r = l.search_ext("dc=example,dc=org", ldap.SCOPE_SUBTREE, "objectClass=*", ["*", "+"], 0)
如果您想在特定日期之后获得上次更改的用户,请尝试在查询中添加modifyTimestamp
,如下所示:
$ ldapsearch -h localhost -w 'admin' -x -D "cn=admin,dc=example,dc=org" -b "DC=example,DC=org" "modifyTimestamp>=20171012152507Z
要获取有关历史记录的更多信息,请尝试在您的ldap中启用overlay accesslog
并使用它:
$ ldapsearch -x -b cn=accesslog
资源:
whenChanged
字段:https://msdn.microsoft.com/en-us/library/ms680921(v=vs.85).aspx modifyTimestamp
字段:https://tools.ietf.org/html/rfc4512