如何通过LDAP搜索属性与指定模式匹配的项目?

时间:2009-08-07 03:40:40

标签: ldap ldap-query

我正在尝试在LDAP服务器中搜索完全指定属性的所有项目。

我正在处理的LDAP模式通过以下方式记录用户角色:

  1. 创建可包含多个属性(角色)和
  2. 中的任何一个的对象类型
  3. 将每个角色的值设置为与其名称相同
  4. 属性不共享公共基类型,而objectclass(“roleuser”)包含非角色的其他属性。角色由以“角色”结尾的属性名称区分。 (呸。)

    实施例。用户的对象类型将包括对象类型roleuser,并且可能具有以下属性=值对:

    cn=userX
      objectclass=roleuser,...
      managerrole=managerrole
      clerkrole=clerkrole
    
    cn=userY
      objectclass=roleuser,...
      managerrole=managerrole
    
    cn=userZ
      objectclass=roleuser,...
      clerkrole=clerkrole
    

    我能够找到文员,经理和经理职员。但是当我查找职员(使用(&(clerkrole=*)(objectclass=roleuser)))时,我会找回角色职员(userZ)以及角色管理员和职员(userX)的用户。

    我可以指定(&(clerkrole=*)(!managerrole=*)(objectclass=roleuser)))来获得不是经理的职员。但这需要我列出(并否定)所有可能的其他角色。

    由于各种原因,我不希望我的应用程序必须知道所有可能的角色,因为这些角色可能比我的应用程序更快地发生变化。

    因此。有没有办法查询模式中roleuser中的所有属性并命名为*role,以便我可以动态指定(并否定)所有其他角色?

    或者有没有办法查询(clerkrole = *)并且该roleuser上不存在名为* role的其他属性?

1 个答案:

答案 0 :(得分:0)

您是否考虑动态构建过滤器?您可以查询模式并检索以“role”结尾的所有属性,然后遍历它们,丢弃所需的属性并为每个项添加(!__​​_ role = *),然后在过滤器上添加您想要的那个并查询使用它。