我正在尝试在 LDAP 服务器中搜索具有完全指定属性的所有项目。
我正在处理的 LDAP 模式通过以下方式记录用户角色:
- 创建一个可能包含多个属性(角色)的对象类型,以及
- 将每个角色的值设置为与其名称相同
这些属性不共享一个公共的基本类型,并且对象类(“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 的属性?