【问题标题】:How To Filter And Limit Attributes Of A Group Object In An LDAP如何过滤和限制 LDAP 中组对象的属性
【发布时间】:2020-02-01 11:18:25
【问题描述】:

我想获取 LDAP 中某个组的用户,具有给定的过滤器(例如:uid="test*")和限制(结果中只有 10 个用户)。

组对象如下所示。

cn=testRole,ou=Groups,dc=WSO2,dc=ORG

该对象有多个成员属性,代表角色“testRole”的用户。

现在我正在使用以下查询来检索组中的所有用户。

(&(objectClass=groupOfNames)(cn=testRole))

并且member被设置为返回属性。

当我运行查询时,testRole 中的所有 10000 个用户都被检索(作为 10000 个成员属性值)。

现在,

  1. 如何限制成员属性值的数量?
  2. 如何通过将过滤器应用于成员属性值uid 来过滤成员属性值?

提前致谢!

我尝试将返回的属性设置为member;range=0-99,但似乎它只适用于 AD,不适用于 LDAP。我需要一个可以与 LDAP 一起使用的解决方案,无论它是否是 AD。

【问题讨论】:

    标签: java search ldap openldap ldap-query


    【解决方案1】:
    1. 我认为 openLDAP 不可能。一个想法是首先设置memberof 覆盖,这样您就可以获取用户条目——不是通过查询组并获取所有member 属性——而是通过直接查询memberOf 这个组的用户。在这种情况下,您可以使用所需范围对结果进行分页。更不用说您还可以按特定成员进行过滤,例如。 (&(memberOf=<groupDN>)(uid=<uid>))(我认为这是您在 2- 中提出的问题)。查看这些链接:

    2. 您可以使用以下过滤器:

      (&(objectClass=groupOfNames)(cn=testRole)(member=uid=<uid>,ou=people,dc=example,dc=com))
      

      但请记住,此查询只获取一个带有 cn=testRole 的 groupOfNames 条目并包含一个带有 dn=... 的成员,在此处添加 member 过滤器只会阻止条目匹配,以防成员的 &lt;uid&gt; 不匹配存在,任何匹配的 uid 都不会改变任何东西。

    我认为您也可以保持查询不变,使用 java 按 x 到 y 的范围迭代成员属性应该不会太难,这完全取决于您需要用它做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2019-01-03
      • 2021-03-20
      • 2021-04-15
      相关资源
      最近更新 更多