已删除用户的 LDAP 查询

Posted

技术标签:

【中文标题】已删除用户的 LDAP 查询【英文标题】:LDAP query for deleted users 【发布时间】:2017-09-22 09:00:31 【问题描述】:

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

但是,objectCategory 属性不存在于墓碑对象上,因此查询(&(objectClass=user)(objectCategory=person)(isDeleted=TRUE)) 将一无所获。

如果您删除 (objectCategory=person) 部分,您还将获得计算机,因为它们继承自用户。

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

如果不是,是否可以从返回的 tombstone 对象中判断它是否是用户?

【问题讨论】:

【参考方案1】:

尝试 LDAP 过滤器,例如:

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

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

【讨论】:

你有 php 或 Python 的例子吗?它不仅适用于 linux 上的过滤器查询【参考方案2】:

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

【讨论】:

以上是关于已删除用户的 LDAP 查询的主要内容,如果未能解决你的问题,请参考以下文章

ldap怎么增加用户的属性,比如url,

(转)oracle中用户删除不了,ORA-01940提示 “无法删除当前已连接用户”

oracle删除某个用户时报错:无法删除已连接用户

主体已经存在LDAP C#

oracle无法删除已连接用户

在 laravel 5.4 中检索软删除的用户帖子