Active directory microsoft AD的LDAP嵌套组筛选器

Active directory microsoft AD的LDAP嵌套组筛选器,active-directory,Active Directory,我想写一个搜索过滤器,它将帮助我检索用户所属的所有组 例如: 假设我正在检索用户A(属于组A)的条目。A组可能是B组的一部分,D组可能是E组的一部分 现在,我的搜索过滤器应该将MemberOf属性作为用户A所属的所有可能组返回给我(在本例中,它是组A、B、D、E) 有关于搜索过滤器外观的指针吗?这应该满足您的要求。它将返回用户所属的每个组的FDN,但是,这将查询该组,而不是用户 例如,要查找“CN=John Smith,DC=MyDomain,DC=NET”是其成员的所有组,请将base设置为g

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

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

现在,我的搜索过滤器应该将MemberOf属性作为用户A所属的所有可能组返回给我(在本例中,它是组A、B、D、E)


有关于搜索过滤器外观的指针吗?

这应该满足您的要求。它将返回用户所属的每个组的FDN,但是,这将查询该组,而不是用户

例如,要查找“CN=John Smith,DC=MyDomain,DC=NET”是其成员的所有组,请将base设置为groups容器DN;例如(OU=groupsOU,DC=MyDomain,DC=NET)和作用域到子树,并使用以下筛选器

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


-jim

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

确保您的域具有全局编录,并确保您使用的帐户是Windows 2000之前兼容的访问组。然后,确保将
tokenGroups
指定为返回的属性之一。在用户对象上执行基本范围搜索

您可以使用adfind.exe(Joware)来解决此问题,并使用此处介绍的标准ldap筛选器。例如:

组嵌套指定如下所示:

(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com)
adfind -f "(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com)" samaccountname -list
如果您使用adfind,则它将如下所示:

(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com)
adfind -f "(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com)" samaccountname -list

如果您希望有除samaccountname以外的输出,例如displayname或mail属性,只需添加到列表中即可。另外,如果要搜索多个用户,则可能需要包含所有用户的inputfile和一些脚本,以提取每行内容,例如adfind。

谢谢Jim。我只是想更好地理解这一点,这是如何工作的,希望你能对此有更多的了解?1.此解决方案是否适用于所有类型的广告服务器?所有类型的AD版本(无论是MS还是open ldap)都支持此功能吗?2.我们提到的是SNMP OID(请原谅我不知道),但如果在AD服务器上未启用SNMP服务本身,那么解决方案是否有效?有关此方法的更多信息,请参见此处:/1-应适用于所有类型的MS目录。2.OID用于可扩展匹配规则的。()-()与SNMP无关。回答很好。每个人都在谈论使用这个OID来查找特定组的递归成员;如果没有大量的手动递归组解析,那么用另一种方法进行解析几乎是无稽之谈。这样好多了;非常感谢。我不确定我是否完全理解这个问题。如果读取DirectoryEntry(本例中的用户)的memberOf属性,则该属性应列出该成员所属的所有组的DNs,无论该组位于目录结构中的何处。您好,目前我们仅使用顶级筛选器进行LDAP搜索。例如,假设我想为用户A提取memberOf,假设userA是组A和组B的成员。然后作为顶级搜索过滤器的一部分,我只能提取组A和组B的信息。但是,如果组A和组B依次是组D的一部分,那么userA会自动成为组D的一部分。我会错过这些信息。