【问题标题】:How to write a Cross Forest LDAP Query in C#?如何在 C# 中编写跨林 LDAP 查询?
【发布时间】:2013-12-14 11:49:57
【问题描述】:

我正在尝试编写一个高效的 LDAP 查询,该查询从另一个森林/域返回结果。没有双向信任。没有条件转发器。我所拥有的是经过验证的网络连接、IP 地址以及要使用的服务帐户和密码。

这是我通常使用的基本 LDAP 代码。

        DirectoryEntry deParent = new DirectoryEntry("LDAPS://000.0.000.00/DC=bob,DC=earl,DC=john,DC=whatever");
        deParent.Username = "Domain\\UserName";
        deParent.Password = "Password";
        deParent.AuthenticationType = AuthenticationTypes.Secure;            
        DirectorySearcher ds = new DirectorySearcher(deParent, qry, columns, SearchScope.Subtree);

我知道这有点广泛,但是那里有很多相互矛盾的信息。所以。

  1. 是否需要信任才能执行跨林查询?仅查询,除服务帐号外无需登录。
  2. 像上面这样的基本 DirectoryEntry 调用会起作用吗?
  3. 谁能提供一个在 c# 中工作的跨林查询示例?

【问题讨论】:

  • 使用全局编录也会有所帮助(端口 3268)。 GC 包含森林的只读副本,因此通常不需要重定向。副本只包含某些值,所以如果您搜索任何不寻常的东西,这将不起作用
  • 在这种情况下,端口 3268 没有对我们开放。不过我会记住这一点,以便随着时间的推移提高性能。

标签: c# active-directory ldap


【解决方案1】:

1.是否需要信任才能执行跨林查询?仅查询,除服务帐号外不登录。

不,执行跨林查询不需要信任。

2. 像上面这样的基本 DirectoryEntry 调用会起作用吗? 一点儿都没有。如果涉及适当的信任,标准的目录条目方法将/可能工作。

3.谁能提供一个在c#中工作的跨森林查询的例子? This Method works.

还有This has more information.

以防万一,如果您没有森林 FQDN 的 dns 条目,只需更新您的 HOSTS 文件以将其指向正确的位置。

还有更多信息。 如果您的搜索请求非常慢(约 48-60 秒),请务必关闭推荐追逐!

    connection.SessionOptions.ReferralChasing = ReferralChasingOptions.None;

【讨论】:

    【解决方案2】:

    所以有错误吗?您的 LDAPS 和 IP 的组合可能是一个问题,因为证书是有效的。在这种情况下,我也希望您的 AuthN 类型应该是 Basic 。

    【讨论】:

    • 在这种情况下,我需要本地域上的条件转发器来解析实际名称吗?例如LDAPS://bobs.happy.little.forest 而不是 LDAPS://123.123.123.123?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2014-06-11
    • 1970-01-01
    相关资源
    最近更新 更多