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

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

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

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

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

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

【问题讨论】:

    标签: active-directory ldap ldap-query


    【解决方案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
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2022-08-03
      • 2017-05-27
      相关资源
      最近更新 更多