代码之家  ›  专栏  ›  技术社区  ›  tpdi

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

  •  0
  • tpdi  · 技术社区  · 15 年前

    我试图在LDAP服务器中搜索 确切地 指定的属性。

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

    1. 创建可以包含多个属性(角色)中任意一个的对象类型,以及
    2. 将每个角色的值设置为与其名称相同

    这些属性不共享公共基类型,而objectclass(“roleuser”)包含其他非角色的属性。角色由以“Role”结尾的属性名来区分。(恶心。)

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

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

    我能查到职员,经理,经理。但当我查到职员时 (&(clerkrole=*)(objectclass=roleuser)) ),我将使用role clerk(userZ)和roles manager and clerk(userX)返回用户。

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

    出于各种原因,我不希望我的应用程序必须知道所有可能的角色,因为这些角色的更改速度可能比我的应用程序更快。

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

    或者有一种方法来查询(CelkPyrase= *),并且没有其他属性名为*角色存在于该RoLeUsor中吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   serialhobbyist    15 年前

    你考虑过动态构建过滤器吗?您可以查询模式并检索以“role”结尾的所有属性,然后遍历它们,放弃所需的属性并添加(!___role=*)用于每个项,然后为所需项添加筛选器并使用该筛选器进行查询。