【发布时间】:2026-01-15 02:20:06
【问题描述】:
我在服务器 1 和服务器 2 上的 ASP.NET 4 (4.0.30319) 应用程序池中部署的网络表单的代码中使用以下 C# 代码。
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "testnet.testad.org:636", "dc=testnet,dc=testad,dc=org");
bool validated = pc.ValidateCredentials(username, password, ContextOptions.Negotiate);
Server1 正在运行:
windows server 2003 SP2
IIS 6.0
ASP.NET 版本 4.0.30319
验证需要 30-60 秒,具体取决于选项。
(注意:使用常规 ldap 会立即进行身份验证,没有延迟)
服务器 2 正在运行:
Windows 服务器 2008 SP2
IIS 7.0
ASP.NET 版本 4.0.30319
运行与 Server1 完全相同的代码,Server2 几乎可以立即进行身份验证。
(我还尝试了针对另一台 IIS 7.0 服务器的代码,结果相同)
以前有人遇到过这个问题吗?
在 IIS 6.0 服务器与 IIS 7.0 服务器上是否有另一种身份验证方式?
有什么我需要配置、添加、删除等的吗?
感谢您对此的任何帮助。
.................................................. ..................................................... ................................................
[更新]
我在发出 ldaps 身份验证请求时打开了 wireshark。
我创建了一个包含超过 636 的所有请求的文件。
可以在这里查看:Server1 636 traffic
发现最大的差距是:
没有。 1949 年 1.115583 秒 - 编号 06788 14.501754 秒
和
14.64297 秒 6803 号 - 27.921379 秒 11742 号
该端口上的所有其他流量都在同一秒内发生。
注意:Server2 上的流量大致相同,但都发生在 2-3 秒之间。
可以在这里查看:Server2 636 traffic
我在登录时运行了 netstat -ano” 命令并发现了以下 ldaps 连接:
原始本地地址外部地址状态 PID
TCP 10.1.72.74:1761 10.1.72.54:636 已建立 3688
TCP 10.1.72.74:1800 10.1.72.54:636 已建立 3688
TCP 10.1.72.74:1825 10.1.72.54:636 已建立 3688
【问题讨论】:
-
因此,使用端口 389 的身份验证调用会立即发生 - 连接超过 636 时从两台服务器颁发的证书,是否相同?唯一一次我注意到 速度急剧下降是在授权时引用绑定没有被正确抑制。您能否对 Server1 上的身份验证尝试进行 Wireshark 尝试以查看流量停止的位置?
-
@X3074861X 是的,使用端口 389 身份验证调用会立即发生。我不确定证书,但我的开发笔记本电脑上没有任何特殊证书,并且在调试时它的身份验证超过 636。我运行了 Wireshark 并在 Server1 上进行了身份验证尝试。我用结果和完整日志文件的位置更新了我上面的问题,所有流量都超过 636。
-
我查看了那些 Wireshark 日志,您可能也注意到了,在 TLS 握手序列期间可以看到最大的流量障碍。在事件查看器中的 Server1 上,在系统日志下,您是否看到来自 Schannel 的任何警告或错误?除了 Negotiate 之外,您可能还需要定义 SSL 连接:
bool validated = pc.ValidateCredentials(username, password, ContextOptions.Negotiate | ContextOptions.SecureSocketLayer); -
我查看了事件查看器系统日志,发现今天早上的 Schannel 错误:“尝试访问 SSL 客户端凭据私钥时发生致命错误。密码返回的错误代码模块是 0x80090016。”
-
日期:2013 年 3 月 25 日时间:上午 10:11:06 来源:Schannel “尝试访问 SSL 客户端凭据私钥时发生致命错误。从加密模块返回的错误代码是 0x80090016。”无论我运行多少次缓慢的 ldaps 登录代码,我都无法复制此错误。
标签: c# authentication iis-7 ldap iis-6