【问题标题】:Slow AD-LDS connection with the PrincipalContext-class via LDAP in SSL通过 SSL 中的 LDAP 与 PrincipalContext 类的慢速 AD-LDS 连接
【发布时间】:2023-03-02 23:49:01
【问题描述】:

在我的开发机器上,我必须安装 AD-LDS。原则上它工作正常,但是第一次通过 PrincipalContext 类连接到 AD-LDS 非常慢(30 秒以上)。在我看来,它首先尝试连接到一些不存在的主机或目录,然后在超时(30 秒)后连接到我的 AD-LDS 并执行它应该做的事情。

我在使用 LDP.exe 和 SSL 连接时观察到的行为相同。但是,使用 ADSI-Edit,通过 SSL 进行连接非常快。通过非 SSL 连接也是如此。
我看了看是否能在提琴手中看到一些东西,但什么也没有。同样在事件日志中我什么也找不到。也许它与证书查找有关?它是用 makecert 自签名的。

更新
与此同时,我观察到一件小事,可能会给出提示:在系统事件日志中,第一次建立与 AD-LDS 的 SSL 连接时,会出现以下消息:

在没有配置的 DNS 服务器响应后,名称 _ldap._tcp.[machineName] 的名称解析超时

但是,消息只注册一次,但每次连接到服务器都需要 30 秒+。我也尝试在主机文件中输入相应的条目,但没有任何改变。

其他信息
证书可能不是问题,但可能有助于解决问题。因此,这里是我创建证书的方式(或多或少的货物代码):

RootAuthority

makecert -pe -n "CN=MyDevRootAuthority" -ss my -sr LocalMachine -a sha1 -sky signature -r "MyDevRootAuthority.cer" 

服务器证书

makecert -pe -n "CN=[MyComputerName]" -ss my -sr LocalMachine -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -in "MyDevRootAuthority" -is MY -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "MyTestCertificate.cer" 

创建后,我将根权限移至受信任的权限并授予所需的权限。

【问题讨论】:

  • 如果你 ipconfig /all 来查看你的 dns 服务器,你是否有任何无法访问的注册?另外,您是否在 Internet 选项 -> 连接 -> LAN 设置中选择了“自动检测设置”?
  • @ghangas:感谢您的建议。遗憾的是,没有配置无法访问的 DNS 服务器。对于 LAN-Settings,我不知道您指的是哪一个。但是网络适配器被配置为通过 DHCP 获取它的配置,并且对于 DNS(按预期工作)[网络设置->以太网->适配器选项]。
  • 如果您的计算机配置为自动检测代理设置,您可能会在搜索 wpad.domain.com/wpad.dat 超时时出现此行为。
  • @ghangas:我试过了,但是行为是一样的。不过还是谢谢你的建议。

标签: adam principalcontext adlds


【解决方案1】:

更新

最近遇到这个问题后,我挖得更深一点,发现,在构造PrincipalContext时使用ContextOptionServerBind可靠地解决了问题,除了上下文中的ValidateCredentials方法。

SDS.P 的替代方法
附加信息:使用 SDS 和 SDS.AM 对我来说总是很复杂。由于其组件提供的通常不相关且不准确的错误信息(由于使用的系统组件(ADSI)的复杂内部层次结构),它会花费大量时间。 最终,我将一些代码移到了 SDS.P 命名空间,尽管 Internet 上关于如何使用的信息很少,但它似乎更合适和更好。我不能代表每个人或每个领域,但从基于 ADSI 的组件迁移到 SDS.P(基于 wldap32.dll)对我来说已经简化和澄清了很多。它的大部分部分甚至可以异步工作。作为奖励,它超级快。 一个很好的起点在这里: https://msdn.microsoft.com/en-us/library/bb332056.aspx

旧解决方案 问题来自这种情况,即我的开发计算机不是域的一部分。我在域集成机器上尝试了同样的事情后看到了这一点,但问题没有发生。

解决方案(适用于非 AD 嵌入式计算机)
代码
在代码中,要连接DirectoryContext,必须使用 dns 后缀“.local”指定主机名。

[machinename].local

网络适配器
此外,在“高级”窗口的网络适配器设置中,在“DNS”选项卡下,“本地”后缀必须注册为连接的 DNS 地址的 DNS 后缀。

证书
但是证书,我不必更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多