【发布时间】:2012-03-27 22:02:54
【问题描述】:
上下文
在将成员从 LDAP 服务器导入我们的应用程序时,我们正在添加组成员身份过滤。
(以前我们从给定的 ldap“基本 DN”导入所有成员;现在管理员可以限制到某些组,即基本 DN 中的成员“Sales”和“HR”)。
我们的应用支持:
SunONE
活动目录
此外,我们计划仅支持静态组,不支持动态组。
我们会怎么做
过去,我们会使用两次查找将成员复制到我们的数据库中以实现这一新功能。
- 在 baseDN 中查找所有成员
- 查找组名在列表中的所有组(包含成员)(例如“销售”或“人力资源”)。通过 Map 以编程方式跟踪“哪些用户属于哪些组”,即使用“组成员”属性(SunONE 中的“uniqueMember”、ActiveDirectory 中的成员)
- 将 #1 和 #2 的结果相交以获得“要导入的成员”
MemberOf/IsMemberOf 能否减少查询和逻辑?
在简短的互联网研究中,我发现 SunONE 和 ActiveDirectory 有一个属性 (isMemberOf/memberOf) 可以标识“此用户所属的组”
理论上,我们可以将上述逻辑简化为一个 LDAP 查询:
- 在 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?
【问题讨论】:
标签: active-directory ldap openldap sunone active-directory-group