在LDAP中validation嵌套组

我不太了解LDAP,所以我提前道歉。

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

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

UAT Group DEV Group portfolio_mangers 

在DEV集团下,我们有一些用户:

 DEV Group jsmith cwilson plo 

用户要求authentication将recursion地​​遍历input组以确定用户是直接还是间接(嵌套)input组的成员。

因此,如果我们开始在UAT集团或DEV集团的遍历,用户jsmith,cwilson和plo将被authentication。

这是可能的,正确的? 从我的阅读中,我相信我必须指定一个基本名称和范围。 既然我想search整个子树,我会指定一个SUBTREE的范围。 这有道理吗? 有替代品吗?

来自LDAP经验丰富的人的build议将是巨大的。 谢谢。

你想要configuration什么应用程序?

有绝大多数具有某种LDAP支持级别的应用程序作为LDAP客户端,根本不支持嵌套组。

修改软件之后,您可能会失败。

如果您的LDAP服务器碰巧是Microsoft Active Directory,那么就有一个非标准的searchfilter,可以帮助您。

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

LDAP_MATCHING_RULE_IN_CHAIN是一个匹配的规则OID,用于提供查找对象祖先的方法。 许多使用AD和AD LDS的应用程序通常使用按照父子关系sorting的分层数据。 此前,应用程序执行传递式组扩展来计算组成员资格,这使用了太多的networking带宽; 应用程序需要进行多次往返查找,如果一个对象在“链中”下降,如果一个链接遍历到最后。

如果你知道哪个特定的组是被授权的,那么就从这个开始。

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

检查每个对象。 如果是用户,那么他们是该组的成员,将其添加到授权用户列表中。 如果它是一个组,按照刚刚对“基本”组进行枚举它们的member对象,将用户添加到允许列表中并枚举组。

我build议对recursion进行限制(或者更好的是,跟踪哪些对象已被检查以避免检查两次),因为组成员关系中可能存在无限循环。

您将构build授权的所有用户对象的列表,然后比较authentication用户的专有名称以查看它是否在授权列表中。

search基础和范围是为了限制尝试对象查找的范围; 你会想使用一个包含你正在看的所有东西的位置。