如何让Ldap用户更改属性而不是所有用户属性
问题描述:
是否有无法获取用户更改的属性而不是所有用户属性?如何让Ldap用户更改属性而不是所有用户属性
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))
答
为了解决这个问题,您需要通过搜索查询的,像这样的结尾处添加一个+
标志,以获得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 - 的Open LDAP
modifyTimestamp
领域:https://tools.ietf.org/html/rfc4512 - https://www.ibm.com/support/knowledgecenter/en/SSKTMJ_9.0.1/admin/conf_usingldapsearchtoreturnoperationalattributes_t.html
- 内部attributs:https://mail.python.org/pipermail/python-ldap/2009q3/002593.html
- 访问日志:http://www.openldap.org/doc/admin24/overlays.html#Access%20Logging
- 如何检查用户的登录历史上的OpenLDAP:https://www.openldap.org/lists/openldap-technical/201505/msg00117.html
+0
不回答问题。 – EJP
号只能得到他们的当前值和信息,如上次修改的日期/时间。 – EJP