在 LDAP 中验证嵌套组

在 LDAP 中验证嵌套组

我不太了解 LDAP,因此提前致歉。

我正在查看使用 LDAP 进行某些身份验证的应用程序中的一个错误。

客户端设置的 LDAP 目录结构包含嵌套组,如下所示:

UAT Group
    DEV Group
         portfolio_mangers

在 DEV 组下我们有一些用户:

DEV Group
     jsmith
     cwilson
     plo

用户要求身份验证将递归遍历输入组以确定用户是否直接或间接(嵌套)是输入组的成员。

因此,如果我们从 UAT 组或 DEV 组开始遍历,用户 jsmith、cwilson 和 plo 将通过身份验证。

这是可能的,对吗?从我的阅读来看,我认为我必须指定一个基本名称和范围。由于我想搜索整个子树,所以我将指定 SUBTREE 的范围。这有意义吗?还有其他选择吗?

来自 LDAP 经验丰富的人士的建议将非常有用。谢谢。

答案1

您正在尝试配置什么应用程序。

大多数应用程序作为 LDAP 客户端都具有一定程度的 LDAP 支持,但根本不支持嵌套组。

如果不修改软件,你可能会倒霉。

如果您的 LDAP 服务器恰好是 Microsoft Active Directory,那么有一个非标准搜索过滤器可能会对您有所帮助。

看: -http://support.microsoft.com/kb/914828 -http://msdn.microsoft.com/en-us/library/windows/desktop/aa746475(v=vs.85).aspx

LDAP_MATCHING_RULE_IN_CHAIN 是一个匹配规则 OID,旨在提供查找对象祖先的方法。许多使用 AD 和 AD LDS 的应用程序通常使用按父子关系排序的分层数据。以前,应用程序执行可传递的组扩展来确定组成员身份,这会占用过多的网络带宽;如果链接一直遍历到最后,应用程序需要进行多次往返才能确定对象是否“在链中”。

答案2

如果您知道哪个特定组被授权,请从该组开始。

您将获得该对象的 LDAP 专有名称的引用,并枚举member该对象的属性。这将包含更多专有名称。

检查每个对象。如果是用户,则他们属于该组,将他们添加到授权用户列表中。如果是组,则枚举他们的member对象,就像您对“基础”组所做的那样,将用户添加到允许列表并枚举组。

我建议对递归进行限制(或者更好的是,跟踪已检查对象的列表以避免检查两次),因为在组成员关系中可能会出现无限循环。

您将构建所有获得授权的用户对象的列表,然后比较身份验证用户的可分辨名称以查看它是否在授权列表中。

搜索基础和范围用于限制尝试查找对象的范围;您需要使用包含您正在查看的所有内容的位置。

相关内容