我正在尝试在LDAP服务器中搜索完全指定属性的所有项目。
我正在处理的LDAP模式通过以下方式记录用户角色:
属性不共享公共基类型,而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的其他属性?
答案 0 :(得分:0)
您是否考虑动态构建过滤器?您可以查询模式并检索以“role”结尾的所有属性,然后遍历它们,丢弃所需的属性并为每个项添加(!___ role = *),然后在过滤器上添加您想要的那个并查询使用它。