我目前面临基于dn的搜索问题。
我在客户端LDAP上工作,所以我无法修改结构,并且我只有readOnly完全访问权限。
在此LDAP中,用户按权限分组。
让我们通过关注uid想象4个权限:
uid=APP1#Admin#feature,ou=permission,ou=client,ou=fr
uid=APP1#User#other feature,ou=permission,ou=client,ou=fr
uid=APP2#Admin,ou=permission,ou=client,ou=fr
uid=APP3#Admin,ou=permission,ou=client,ou=fr
APP1,APP2和APP3是三种不同的应用
现在想象3个用户:
第一
uid=jdoe,ou=user,ou=client,ou=fr
dnPermission=uid=APP2#Admin,ou=permission,ou=client,ou=fr
dnPermission=uid=APP1#User#other feature,ou=permission,ou=client,ou=fr
dnPermission=uid=APP3#Admin,ou=permission,ou=client,ou=fr
第二
uid=jdupont,ou=user,ou=client,ou=fr
dnPermission=uid=APP1#Admin#feature,ou=permission,ou=client,ou=fr
dnPermission=uid=APP2#Admin,ou=permission,ou=client,ou=fr
第三
uid=mhari,ou=user,ou=client,ou=fr
dnPermission=uid=APP2#Admin#feature,ou=permission,ou=client,ou=fr
dnPermission=uid=APP3#Admin,ou=permission,ou=client,ou=fr
每个应用程序都可以拥有许多权限,并且权限列表在当时不稳定。
我的目标是让所有用户通过一次查询获得APP1的许可。
我无法获得所有用户并进行过滤,因为LDAP有24K +用户而我的应用只关注75个用户。
我的第一个想法是处理类似字符串的dn和用户关注查询:
(&(objectclass=people)(dnPermission=uid=APP1*))
或
(&(objectclass=people)(dnPermission=APP1*))
但两人都给我0结果。
有可能吗? 怎么样?
NB1:人是标准Person类的子类,没有技术帐户
NB2:dnPermission是DN链接,而不是全文属性。
答案 0 :(得分:1)
我的猜测是没有像objectClass这样的东西' People'。 LDAP中人员的标准对象类是' Person'及其子类' organizationalPerson'和' inetOrgPerson'