【问题标题】:LDAP: Is the memberOf/IsMemberOf attribute reliable for determining group membership: SunONE/ActiveDirectory / OpenLDAPLDAP:memberOf/IsMemberOf 属性对于确定组成员身份是否可靠:SunONE/ActiveDirectory / OpenLDAP
【发布时间】:2012-03-27 22:02:54
【问题描述】:

上下文

在将成员从 LDAP 服务器导入我们的应用程序时,我们正在添加组成员身份过滤。

(以前我们从给定的 ldap“基本 DN”导入所有成员;现在管理员可以限制到某些组,即基本 DN 中的成员“Sales”和“HR”)。

我们的应用支持:

  • SunONE

  • 活动目录

此外,我们计划仅支持静态组,不支持动态组。

我们会怎么做

过去,我们会使用两次查找将成员复制到我们的数据库中以实现这一新功能。

  1. 在 baseDN 中查找所有成员
  2. 查找组名在列表中的所有组(包含成员)(例如“销售”或“人力资源”)。通过 Map 以编程方式跟踪“哪些用户属于哪些组”,即使用“组成员”属性(SunONE 中的“uniqueMember”、ActiveDirectory 中的成员)
  3. 将 #1 和 #2 的结果相交以获得“要导入的成员”

MemberOf/IsMemberOf 能否减少查询和逻辑?

在简短的互联网研究中,我发现 SunONE 和 ActiveDirectory 有一个属性 (isMemberOf/memberOf) 可以标识“此用户所属的组”

理论上,我们可以将上述逻辑简化为一个 LDAP 查询:

  1. 在 baseDN 中查找属于任何组的所有成员

MemberOf/IsMemberOf 能否减少查询和逻辑?

知道问题: - memberOf/isMemberOf 只支持静态组 - 它不支持嵌套组

问题

  • 这种使用 memberOf/IsMemberOf 的方法是否有效?
  • 有什么注意事项吗?
  • OpenLDAP 或其他服务器呢?他们都支持这样的属性吗? (我看到 OpenLDAP 有 memberOf “覆盖”,但管理员必须明确启用它)

参考

SunOne: http://docs.oracle.com/cd/E19575-01/820-2763/bcajq/index.html

活动目录: http://msdn.microsoft.com/en-us/library/ms677943.aspx

相关的 SO 问题: How to write LDAP query to test if user is member of a group?

memberOf vs. groupMembership in LDAP (Liferay)

【问题讨论】:

    标签: active-directory ldap openldap sunone active-directory-group


    【解决方案1】:
    Will this approach using memberOf/IsMemberOf work?
    

    它会根据警告起作用。

    Any caveats?
    

    如果它以 OpenLDAP 实现的方式工作,则 memberOf 属性仅适用于启用后创建的条目。它没有“赶上”。

    What about OpenLDAP or other servers? do they all support such an attribute. (I see that OpenLDAP has memberOf "overlay", but an
    

    管理员必须明确启用它)

    您可以查询任何 LDAP 服务器的根 DN 以确定它是否支持该功能。您对 OpenLDAP 对此的支持是正确的。

    【讨论】:

    • Active Directory 或 SunONE 对此功能的支持是否有任何问题?
    • "您可以查询任何 LDAP 服务器的根 DN 以了解它是否支持该功能。" 您能举一个查询示例吗?
    • @user331465 获取rootDSE的操作属性即可。
    【解决方案2】:

    我无法与 Sun ONE 交谈,但 Active Directory 确实支持来自用户的 memberOf 属性,您可以对其进行查询。该属性是一个多值属性,包含用户所属组的 distinctName。

    也就是说,您必须通过组的 dn 来查询组,并且不能使用通配符匹配作为其中的一部分。这本身不支持嵌套组,但如果您愿意,我只需将 objectCategory 添加到查询属性并检查“如果此成员是另一个组,则重复查找”。

    如果你的组结构中有循环,这一切都将付诸东流,但我很确定很多其他事情也是如此,而 AD 会阻止你这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      相关资源
      最近更新 更多