0

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

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

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

这些属性不共享一个公共的基本类型,并且对象类(“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))) 来获取不是经理的文员。但这需要我列出(并否定)所有可能的其他角色。

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

所以。有没有一种方法可以查询所有属性的模式 inroleuser和 named *role,以便我可以动态指定(和否定)所有其他角色?

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

4

1 回答 1

0

您是否考虑过动态构建过滤器?您可以查询架构并检索以“角色”结尾的所有属性,然后遍历它们,丢弃您想要的属性并为每个项目添加 (!___role=*),然后添加过滤器以获取您想要的并查询使用那个。

于 2009-08-12T16:22:05.637 回答