LDAP:如何为嵌套属性和值创建搜索过滤器?



我了解如何根据简单的属性创建ldap搜索过滤器,例如

(&(objectClass=universityPerson)(surname=Smith*))

将返回一个姓氏以"史密斯"开头的大学人员的漂亮列表。 目前为止,一切都好!

在我们的大学LDAP架构中,人们有许多自定义属性或子对象,其结构如下

graduateStatus: {campus=CAMPUS_CODE}:{degSchool=SCHOOL_CODE}:{classYr=YYYY}

universityHR:
{jobCategory=Staff}:
{campus=CAMPUS_CODE}:
{deptId=999999}:
{deptGroup=COLLEGE_BUSINESS}:
{deptDescription=Business Library}:
{deptVicePresidentArea=PROVOST}:
{jobcode=123456}:
{jobFamily=123}:
{emplStatus=A}:
{regTemp=R}

进行LDAP查询以回答以下问题将非常有用:

  • "1995年班上从商学院毕业的人是谁?">
  • "护士学校的所有工作人员都是谁,工作代码=456789?">
  • "在主校区,jobFamily=789的临时员工是谁?">

我希望能够创建引用这些子属性的 ldap 搜索过滤器,例如:

(&(objectClass=universityPerson)(graduateStatus.campus=BUS)(graduateStatus.classYr=1995))

(&(objectClass=universityPerson)(universityHR.regTemp=T)(universityHR.jobFamily=789))

但我无法弄清楚这是否可能,更不用说语法可能是什么了。

我怀疑这不是LDAP的好用例,我应该在其他企业系统中寻找此类问题的答案。 然而,将企业目录用作美化的电话簿是非常方便的。

挖掘各种发行版的 OpenLDAP.org 和ldapsearch文档并没有给出答案。 每当我查找有关嵌套属性或层次结构的内容时,我都会找到大量有关嵌套和成员资格查询的文档,但这不是这里的问题。

非常感谢您的任何建议。

在不修改数据结构的情况下,我能看到的OpenLDAP的唯一方法是开发一个可以允许您执行此类请求的覆盖层,但这不是一件容易的事;)

如果您可以修改数据结构或复制(并保持某些数据的完整性),则可以在用户组中扩展这些属性。

请求将是查找同时属于多个组的用户。

例如:(&(objectClass=universityPerson)(universityHR.regTemp=T)(universityHR.jobFamily=789))

可能是 :

(&(objectClass=universityPerson)(memberOf=cn=T,ou=regTemp,ou=universityHR,ou=group,dc=example,dc=com)(memberOf=uid=789,ou=jobFamily,ou=universityHR,ou=group,dc=example,dc=com))

用像这样的树:

dc=example,dc=com
`- ou=group
`- ou=universityHR
|- ou=jobFamily
|   |- uid=789
|   `- uid=987
`- ou=regTemp
|- cn=T
`- cn=A

我能想到的最后一个想法是在 API 中进行这种过滤,并使用这种过滤器请求您的 API,让 API 发出所需的请求并聚合结果。

如果您可以发布自定义嵌套属性/子条目的 LDIF 以查看可能的情况。

最新更新