获取没有特定子条目的所有条目

问题描述 投票:0回答:1

我有这个 LDAP 方案。

dc=company, dc=com
    - ou=users
        - uid=aaaa  
            - ou=car 
                - brand=audi  
                - brand=chevrolet  
        - uid=bbbb  
            - ou=car
                - brand=ford  
                - brand=audi  
                - brand=chevrolet 
        - uid=cccc  
            - ou=car
                - brand=ford   
                - brand=chevrolet 
        - uid=dddd  
            - ou=car
                - brand=ford  
                - brand=audi  

我只需要获取没有福特汽车的用户。可以一次请求完成吗?

谢谢你

ldap openldap ldap-query
1个回答
0
投票

如果您只需要 DN(并且您的排除标准也恰好基于 DN),那么这是可能的,但如果您需要非 DN 属性,则

如果所有必要的数据(包括您要排除的子条目和您要查找的用户)都存储在 DN 中:

  1. 对子条目进行全局搜索,例如
    (&(objectClass=car)(brand=*))
    (不请求任何属性)。
  2. 使用 LDAP 客户端的功能来解析/解解析或拆分/连接 DN,将每个结果的 DN 映射到其父(父)条目 DN,即用户的 DN。
  3. 将所有用户 DN 收集到一个集合中。
  4. 循环之前的 (childDN, userDN) 结果,每次 childDN 为“brand=ford”时,从集合中删除 userDN。

如果子条目必须通过非 DN 属性进行匹配,则需要进行额外的搜索来查找

(brand=ford)
条目(然后步骤 4 是“如果 childDN 在 badCars 集中,则从 goodUsers 集中删除相应的 userDN ”)。

如果您需要检索非 DN 属性,则至少需要进行一次额外搜索来加载用户属性。使用 Active Directory,您可以构建一个类似

(|(distinguishedName=DN1)(distinguishedName=DN2)(...))
的过滤器,让您可以按 DN 一次检索多个用户。

© www.soinside.com 2019 - 2024. All rights reserved.