我不太了解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/914828 – http://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基础和范围是为了限制尝试对象查找的范围; 你会想使用一个包含你正在看的所有东西的位置。