1

语境

在将成员从 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 “overlay”,但管理员必须明确启用它)

参考

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

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

相关的 SO 问题: 如何编写 LDAP 查询来测试用户是否是组的成员?

LDAP 中的 memberOf 与 groupMembership (Liferay)

4

2 回答 2

2
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 对此的支持是正确的。

于 2012-03-16T04:02:12.110 回答
0

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

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

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

于 2012-03-27T14:02:54.617 回答