LDAP过滤器:我可以在多值属性中搜索客户端的部门号吗?

时间:2014-10-14 14:17:38

标签: filter ldap ldap-query

我可以从多值属性中检索客户的部门编号吗?让我们假设我有一个用户可以访问几个客户,所有客户都有其他部门结构。 因此,我想将这些信息存储在具有以下结构的多值字段中:customer:departmentNumber

现在举例:我想从客户 400 检索部门编号 124 ,这怎么可能?以下用户示例:

dn: cn=joe,ou=people,dc=company,dc=com
cn: joe
department number: 300: 1; 400: 124; 108: 25;

我只想检索 124 ,没有别的。 这是这样的吗? departmentNumber = 400:*;

2 个答案:

答案 0 :(得分:0)

在显示的结构中,您无法识别“客户400”。

BTW:“部门编号”不是有效的LDAP属性名称。

不确定结构的格式是什么。

在LDIF格式中,结构更像是:

dn: cn=joe,ou=people,dc=company,dc=com
cn: joe
departmentnumber: 300
departmentnumber: 1
departmentnumber: 400
departmentnumber: 124
departmentnumber: 108
departmentnumber: 25
customer: 400

在哪种情况下过滤器将是:

(&(customer=400)(departmentnumber=400))

如果您使用的是ldapsearch,它将类似于:

ldapsearch -D“cn = Administrator”-w secret -p 389 -h dc.company.com -b“ou = people,dc = company,dc = com”-s sub“(&(customer = 400) )(departmentnumber = 400))“

这将返回与过滤器匹配的所有条目“(&(customer = 400)(departmentnumber = 400))”。

如果您收到searchResult,您可以放心,departmentnumber = 400。

您可能会得到多个结果。

-Jim

答案 1 :(得分:0)

你不能只检索

departmentnumber: 400: 124

如果用户条目包含属性 departmentnumber 的值大于on。 LDAP将返回该用户条目的deparmentnumber的所有值,您将需要在客户端排除那些您不想要的值。

从检索的角度来看,你能做的最好的就是......

dn: cn=joe,ou=people,dc=company,dc=com
departmentnumber: 300: 1
departmentnumber: 400: 124; 
departmentnumber: 108: 25;

如果departmentnumber也是多值的,则无法保证排序顺序。