带有嵌套组的 ldap 查询

带有嵌套组的 ldap 查询

我尝试构建对 MS Active Directory 的 ldap 查询。我发现有一个 LDAP_MATCHING_RULE_IN_CHAIN 类型可以执行此操作。结果为以下语法:

(&(sAMAccountName=Benna)(memberof:1.2.840.113556.1.4.1941:=CN=Group1,OU=Root,DC=domain,DC=local))

问题是:

查询*在线枚举第一个嵌套组。

在我的示例中,Group1 具有以下成员组:

  • 域管理员
  • 域成员
  • 域计算机

并且 Benna 在组域成员中,但是查询没有给我结果*。

当我将过滤器更改为

(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:=CN=Group1,OU=Root,DC=domain,DC=local))

我可以看到,该查询仅枚举了“域管理员”组的成员*。

所以这就是它与我上面的查询不匹配的原因。

发生这种情况有什么原因吗?

*使用 adsiedit.msc 进行测试

编辑:

好吧 - 看来这就是原因

https://support.microsoft.com/en-us/kb/275523

但是,是否也可以针对 primaryGroupID 属性构建对嵌套组的查询?或者是否有任何方法可以进行单个 ldap 查询,您可以使用该查询来查找用户是否是组的成员(该组也可以有嵌套组)?

谢谢,托马斯

答案1

好的 - 看来,该限制是由低于 2003 的域林级别造成的。

https://support.microsoft.com/en-us/kb/275523

将森林模式改为 2003 后它应该可以工作。我改变了,但目前它不起作用... 等几分钟,希望这是解决方案。

答案2

使用旧的命令行工具来做这件事非常烦人,但使用 Remore 服务器管理工​​具获得的 ActiveDirectory Powershell 模块可以轻松返回所有嵌套组成员:

获取 ADGroupMember“组名”-recursive

以下是一篇解释该命令的知识库文章:https://technet.microsoft.com/de-de/library/ee617193.aspx

如果您的 AD 至少在 Server 2008 R2 上,则此方法有效。

答案3

使用纯 LDAP 查询确定嵌套组成员身份可能比较棘手。请注意,memberOf 是一个构造属性。另外请注意,primaryGroupID 只是一个 ID。虽然 MMC 将在帐户的成员身份选项卡中显示主要组,但对象的可分辨名称实际上并未放置在该组的成员属性中。

正如 megamorf 所指出的,您需要递归查询每个组的组成员信息。我公司的产品 Carbon 是一款基于 Web 的 LDAP 管理工具,除其他功能外,它可以将嵌套的组成员身份显示为图表。由于它是基于 Web 的,因此只要您有受支持的浏览器,就可以从 Linux(或 Mac 或 Windows)机器上使用它。查看steelhive.com。您可以下载免费演示版。它是针对 VMware ESXi 5+ 的 OVA/虚拟设备。

相关内容