已删除用户的LDAP查询

时间:2017-09-22 09:00:31

标签: active-directory ldap ldap-query

查询用户目录的常规方法是(&(objectClass=user)(objectCategory=person))。查询已删除对象的常规方法是添加(isDeleted=TRUE)

但是,tombstone对象上不存在objectCategory属性,因此(&(objectClass=user)(objectCategory=person)(isDeleted=TRUE))的查询将不会为您提供任何内容。

如果您删除了(objectCategory=person)部分,那么您也将获得计算机,因为它们是从用户继承的。

是否可以仅检索已删除的用户?

如果没有,是否可以从返回的逻辑删除对象中判断它是否是用户?

2 个答案:

答案 0 :(得分:0)

尝试使用LDAP过滤器:

(&(isDeleted=TRUE)(userAccountControl:1.2.840.113556.1.4.803:=512))

这应检索大多数已删除的用户类型条目。

答案 1 :(得分:0)

python3代码

import ldap
from ldap.controls.simple import ValueLessRequestControl
...
base = 
scope = ldap.SCOPE_SUBTREE
filterstr = '(&(objectClass=user)(isDeleted=TRUE))'
attrlist = 
result_set = []
ct = ldap.controls.simple.ValueLessRequestControl('1.2.840.113556.1.4.417', True)
result_id = l.search_ext(base, scope, filterstr, attrlist, serverctrls=[ct, ])
for i in range(0, 100):
    result_type, result_data = l.result(result_id, 0)
    if result_type == ldap.RES_SEARCH_ENTRY:
        result_set.append(result_data)
    else:
        break
...