【问题标题】:Using wildcards in LDAP query to match trustParent property在 LDAP 查询中使用通配符来匹配 trustParent 属性
【发布时间】:2015-03-05 09:30:07
【问题描述】:

我正在使用如下代码通过 LDAP 查询构建域树。

        DirectorySearcher configSearch = new DirectorySearcher(
            context.AuthContext.ConfigurationDirectoryEntry)

        configSearch.Filter = string.Format("(&(netbiosname=*)(trustParent=CN={0},CN=Partitions,CN=Configuration,{1}))",
                    parentFolder.Name.Split('.').First(), parentFolder.GetNcName());

        // Configure search properties to return
        configSearch.PropertiesToLoad.Add("dnsroot");
        configSearch.PropertiesToLoad.Add("ncname");
        configSearch.PropertiesToLoad.Add("netbiosname");
        configSearch.PropertiesToLoad.Add("trustParent");
        SearchResultCollection forestPartitionList = configSearch.FindAll();

        // Loop through each returned domain in the result collection
        foreach (SearchResult domainPartition in forestPartitionList)
        {
            // Use domain information
        }

这样的 LDAP 过滤器可以正常工作:

(trustParent=CN=**NETBIOSNAME**,CN=Partitions,CN=Configuration,DC=domain,DC=com)

但是,带有通配符的版本不起作用(返回空结果):

(trustParent=*,DC=domain,DC=com)

我在无状态 Web 应用程序中使用查询,所以我只有父域名作为输入,我想避免额外的 LDAP 查询来获取 NetBIOS 名称或 DistinguishedName(远程 AD 域,可能属于另一个子网)。

任何提示使用通配符过滤 trustParent 属性的搜索结果?

【问题讨论】:

    标签: c# active-directory ldap


    【解决方案1】:

    如果 trustParent 属性的语法是 DistinguishedName,则无法进行通配符匹配,因为 LDAP 中没有用于匹配 DistinguishedName 上的子字符串的标准。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多