我想编写一个搜索过滤器,它可以帮助我检索用户所属的所有组。
例如:假设我正在检索用户 A(属于 A 组)的条目。A组可能是B组的一部分,而D组又可能是E组的一部分。
现在,我的搜索过滤器应该将 MemberOf 属性作为用户 A 所属的所有可能组返回给我(在这种特定情况下,它是组 A、B、D、E)。
关于搜索过滤器的外观的任何指示?
我想编写一个搜索过滤器,它可以帮助我检索用户所属的所有组。
例如:假设我正在检索用户 A(属于 A 组)的条目。A组可能是B组的一部分,而D组又可能是E组的一部分。
现在,我的搜索过滤器应该将 MemberOf 属性作为用户 A 所属的所有可能组返回给我(在这种特定情况下,它是组 A、B、D、E)。
关于搜索过滤器的外观的任何指示?
这应该可以满足您的要求。它将返回用户所属的每个组的 FDN,但是,这会查询组,而不是用户。
例如,要查找 "CN=John Smith,DC=MyDomain,DC=NET" 所属的所有组,请将 base 设置为组容器 DN;例如 (OU=groupsOU,DC=MyDomain,DC=NET) 和子树的范围,并使用以下过滤器。
(成员:1.2.840.113556.1.4.1941:=(CN=John Smith,DC=MyDomain,DC=NET))
-吉姆
用户对象中有一个名为tokenGroups的属性。它是由 Active Directory 在运行时计算的构造属性。它包括用户对象所属的所有组。
确保您的域有一个全局目录,并确保您使用的帐户是 Pre-Windows 2000 Compatible Access 组。然后,确保tokenGroups
被指定为返回的属性之一。对用户对象进行基本范围搜索。
您可以使用 adfind.exe (joeware) 来解决此问题并使用此处描述的标准 ldap 过滤器。例如:
组嵌套指定如下:
(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com)
如果你使用 adfind,那么它看起来像这样:
adfind -f "(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com)" samaccountname -list
如果您想要输出 samaccountname 以外的输出,例如显示名称或邮件属性,只需添加到列表中即可。此外,如果您想搜索多个用户,那么您可能需要包含所有用户的输入文件和一些脚本来提取每一行以进行查找。