首页 文章

LDAP:memberOf / IsMemberOf属性是否可靠用于确定组成员身份:SunONE / ActiveDirectory / OpenLDAP

提问于
浏览
1

Context

我们在将成员从LDAP服务器导入我们的应用程序时添加了组成员资格过滤 .

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

我们的应用支持:

  • SunONE

  • Active Directory

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

How We Would Have Done It

在过去,我们将使用两次查找将成员复制到我们的数据库中以获得此新功能 .

  • 查找baseDN中的所有成员

  • 查找组名称在列表中的所有组(包含成员)(例如"Sales"或"HR") . 以编程方式通过Map "which users belong to which groups"进行跟踪,即使用"group member"属性(SunONE中的"uniqueMember",ActiveDirectory中的"member")

  • 将#1和#2的结果相交以获得'members to import'

Can MemberOf/IsMemberOf Reduce queries and logic?

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

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

  • 查找baseDN中任何组成员的所有成员

Can MemberOf/IsMemberOf Reduce queries and logic?

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

Question

  • 这种使用memberOf / IsMemberOf的方法有效吗?

  • 有任何警告吗?

  • OpenLDAP或其他服务器怎么样?他们都支持这样的属性吗? (我看到OpenLDAP有memberOf "overlay",但是管理员必须明确启用它)

Reference

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)

2 回答

  • 0

    使用memberOf / IsMemberOf的方法是否有效?

    它的工作原理需要注意 .

    有什么警告吗?

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

    OpenLDAP或其他服务器怎么样?他们都支持这样的属性吗? (我看到OpenLDAP有memberOf“overlay”,但是一个
    管理员必须明确启用它)

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

  • 2

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

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

    如果你的团队结构中有一个循环,这一切都会变得很糟糕,但我很确定很多其他事情也是如此,而且AD阻止你这样做 .

相关问题