如何获取Ldap用户更改的属性而不是所有用户属性

时间:2017-11-11 08:05:39

标签: python ldap openldap

无论如何都要获取用户更改的属性而不是所有用户属性?

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))

1 个答案:

答案 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

资源: