用于Microsoft AD的LDAP嵌套组过滤器

时间:2012-09-07 07:49:04

标签: active-directory

我想写一个搜索过滤器,它可以帮助我检索用户所属的所有组。

例如: 假设我正在检索用户A的条目(它是A组的一部分)。 A组可能是B组和D组的一部分,而D组又可能是E组的一部分。

现在,我的搜索过滤器应该返回我的MemberOf属性作为用户A所属的所有可能组(在这种特定情况下,它是组A,B,D,E)。

有关搜索过滤器外观如何的任何指示?

3 个答案:

答案 0 :(得分:2)

这应该做你要问的事情。它将返回用户所属的每个组的FDN,但是,这将查询该组,而不是用户。

例如,要找到“CN = John Smith,DC = MyDomain,DC = NET”的所有组成员,将基数设置为groups容器DN;例如(OU = groupsOU,DC = MyDomain,DC = NET)和子树的范围,并使用以下过滤器。

(成员:1.2.840.113556.1.4.1941:=(CN = John Smith,DC = MyDomain,DC = NET))

-Jim

答案 1 :(得分:1)

您可以使用adfind.exe(joeware)来解决此问题并使用此处描述的标准ldap过滤器。例如:

http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx

组嵌套指定如下:

(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以外的输出,例如displayname或mail属性,只需添加到列表中即可。此外,如果您想搜索多个用户,那么您可能希望包含所有用户的输入文件和一些脚本以提取每行以进行adfind。

答案 2 :(得分:0)

用户对象中有一个名为tokenGroups的属性。它是Active Directory在运行时计算的构造属性。它包括用户对象所属的所有组。

确保您的域具有全局编录,并确保您使用Pre-Windows 2000 Compatible Access组的帐户。然后,确保将tokenGroups指定为返回的属性之一。对用户对象执行基本范围搜索。