Active directory LDAP查询以查看用户是否是特定组的成员

Active directory LDAP查询以查看用户是否是特定组的成员,active-directory,ldap,Active Directory,Ldap,假设我有一个用户(User1)和一个按排名顺序排列的组列表(Group1、Group2、Group3…)。我试图找出使用LDAP查询确定(有序)列表中特定用户所属的第一个组的最有效方法。这些查询将使用“LDAP\u匹配\u规则\u IN\u链”规则,以便服务器知道也要在子组中查找匹配项。除了可能使这些查询的处理速度慢得多之外,这实际上没有什么变化,这使得性能变得更加重要 一个选项是获取用户所属的所有组的列表,然后遍历列表以查找第一个匹配项。这很好,但我担心LDAP服务器将花费所有时间生成一个庞大

假设我有一个用户(User1)和一个按排名顺序排列的组列表(Group1、Group2、Group3…)。我试图找出使用LDAP查询确定(有序)列表中特定用户所属的第一个组的最有效方法。这些查询将使用“LDAP\u匹配\u规则\u IN\u链”规则,以便服务器知道也要在子组中查找匹配项。除了可能使这些查询的处理速度慢得多之外,这实际上没有什么变化,这使得性能变得更加重要

一个选项是获取用户所属的所有组的列表,然后遍历列表以查找第一个匹配项。这很好,但我担心LDAP服务器将花费所有时间生成一个庞大的组列表,而我们实际上可能只需要列表中的第一项

另一个选项是进行一系列LDAP查询,检查用户是否是列表中每个组的成员,每次一个。这似乎效率不高,因为查询的数量可能与列表中的组数量相同

我想做的是做一个查询,向LDAP服务器提供组列表,然后返回用户所属的第一个组,或者至少告诉我用户所属的组。我不知道这是否真的可能。我当然可以或将一组术语组合在一起,以查看用户是否是我列出的任何组的成员,但我不知道是否可以构造一个查询,以便它告诉我哪些术语生成了匹配项


有什么想法吗?这可能吗?谢谢

解决方案是否必须直接来自LDAP查询,您是否可以简单地缓存列表中每个组中的所有用户(可能每10分钟刷新一次缓存),然后在需要检查用户时快速搜索缓存。是的,这是可能的。在所有条件相同的情况下,最好以一种数据永远不会过时的方式实现这一点,但每隔几分钟刷新一次的缓存肯定非常接近实时。一个潜在的问题是处理大型群体,如域用户。如果我们保存该组所有成员的完整列表,那么这将是相当大的数据量。因此,现在您可以看到嵌套组和一般组的一些问题。我想您可以在用户上查询memberOf value,如果没有命中,则执行LDAP\u MATCHING\u RULE\u IN\u CHAIN查询。