定义组的域中的域控制器是否包含所有成员信息?

定义组的域中的域控制器是否包含所有成员信息?

假设我有一个包含许多域的林设置。如果我要从任何域中选择一个任意安全组,那么查找该组的所有用户成员(包括嵌套组产生的用户成员)的最佳方法是什么?我希望能够做到这一点,而不管组类型如何(即通用、全局或域本地)。我的理解是,我们不能单独使用全局目录,因为组成员不会为所有组类型复制到那里。

我们最终将使用代码来实现这一点,但现在我只想了解这个过程。为了简单起见,假设我已经知道该组的对象GUID价值。高级步骤是:

  1. 查询林中的任何全局目录以查找该组(通过对象GUID)并通过其检索该组定义的域对象类别属性可分辨名称

  2. 使用组的对象GUID成员:1.2.840.113556.1.4.1941作为过滤器

还有其他吗?是否存在一些极端情况,我需要查询其他域控制器(例如其他子域)?是否存在其他情况,我不需要比全局目录更进一步,因为组类型(或其他属性)保证其所有成员信息都在全局目录中复制?

编辑

  • 将 objectCategory 更改为可分辨名称

答案1

按搜索memberOf不会提供所有结果,因为您只能找到搜索范围内的用户(例如,如果您搜索一个域,则只能找到该域上的用户,即使该组有来自其他域的成员)。

关于谁是某个团体的成员的权威名单在member组本身的属性。该member属性包含distinguishedName组的所有成员。该member属性被复制到全局目录(仅适用于通用组),但是,AD 一次只为您提供 1500 个成员。对于任何超过该数量的组,您需要请求更多。

如果您打算从 开始objectGuid,那么您可以使用它直接绑定到对象。您根本不需要搜索。您可以使用此符号绑定到具有 GUID 的对象:

LDAP://<GUID={guid}>

字符串 GUID 在哪里{guid}。然后读取member属性。

如果某个组有其他域上的成员,而该域不在同一林中,那么事情就会变得有点复杂。在这些情况下,member该组的属性将包含该组同一域上的一个对象,称为“外部安全主体”,其中包含外部域上实际帐户的 SID。如果您想获取有关该帐户的信息(如名称或电子邮件地址),则需要使用该信息连接到外部域以检索该信息。

AD 也有“主要群体”的概念,它们有所不同,但您可能不必担心。我写了一篇关于这个的文章,叫做什么使会员成为会员?

我还用 C# 写了一篇包含示例代码的文章,查找组的所有成员,包括遵循外部安全主体。即使您不打算使用 C#,后台仍然是 LDAP,因此可以使用其他语言复制相同的结果。

相关内容