【问题标题】:LDAP filter: Can I search for the department number of a client in a multi-valued attribute?LDAP 过滤器:我可以在多值属性中搜索客户的部门编号吗?
【发布时间】:2014-10-14 14:17:38
【问题描述】:

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

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

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

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

【问题讨论】:

  • 没有想法?请帮帮我...

标签: filter ldap ldap-query


【解决方案1】:

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

顺便说一句:“部门编号”不是有效的 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) (部门编号=400))"

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

如果您收到搜索结果,您可以放心,departmentnumber=400。

您可能会得到多个结果。

-吉姆

【讨论】:

    【解决方案2】:

    你不能只检索

    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;
    

    如果部门编号也是多值的,则无法保证排序顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2017-11-20
      • 1970-01-01
      相关资源
      最近更新 更多