.net - 协商时重置为 Kerberos :Kerberos faults to NTLM

标签 .net kerberos ntlm iis-8.5 kerberos-delegation

我正在使用一个系统,该系统实现从 Firefox 38.2.1(或 IE 11)访问在 Windows Server 2012 (IIS 8.5) 上运行的 Intranet .NET 4.5.1 Web 应用程序到 SQL Server 的双跳约束委派2008 R2 在不同的服务器上。委派场景正在运行:用户的 AD 凭据传递到与 Web 服务器分开的服务器上的数据库。 DC是Windows Server 2008 R2,我们使用SPN。

但是,在某些情况下,例如缺少 Firefox 配置设置,Kerberos 将失败;身份验证协议(protocol)降级为 NTLM。在重新设置 Kerberos 身份验证协议(protocol)之前,委派将在一段时间内不再起作用(一些消息来源称 5 分钟;根据我们的测试,它更像是 10-12 分钟)。此外,失败的委派会影响协议(protocol)降级生效后访问应用程序的所有用户,直到自动重新安装 Kerberos。换句话说,他们的 session 使用 NTLM,并被阻止访问数据库 10-12 分钟。

有没有办法通过代码(c#)/IIS/Firefox/IE或其他方法,手动将身份验证协议(protocol)恢复为Kerberos,从而缩短使用NTLM协议(protocol)的窗口?

最佳答案

我以前见过这种类型的问题。我强烈建议不要尝试通过自定义代码解决此问题,因为那样您将必须检测协议(protocol)条件失败并采取相应的行动等等。这样的努力非同小可。相反,实际上更容易(1)开发一个脚本方法来迭代所有安装了 Firefox 的计算机,并设置 network.negotiate-auth.trusted-uris 和 network.negotiate-auth.delegation-uris 以包含您的域名(请参阅: Configure Firefox to authenticate using SPNEGO and Kerberos ),或 (2) 通过中央服务器强制执行 Firefox 设置(通过 about:config 可见的设置)。对于#2,请参阅 Deploying Firefox in an enterprise environment 。我更喜欢#2,因为您可以通过这种方式控制所有自定义 Firefox 设置。

关于.net - 协商时重置为 Kerberos :Kerberos faults to NTLM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39399812/

相关文章:

c# - 如何将 TabPage 的标题文本设为粗体?

Java EE SSO 最佳实践

java.lang.IllegalArgumentException : ResourceLoader must not be null in Spring

java - Apereo CAS 使用 NTLM 而不是 Kerberos

java - "The matching wildcard is strict, but no declaration can be found for element ' http '"错误

http - IIS -> 连接器 -> Tomcat(NTLM 身份验证)

.net - 哪种数据库模式最适合我的导航?

.net - 具有 peertrust 和自签名客户端证书的 WCF 传输安全性

c# - 想使用 LINQ 而不是 foreach 但它不起作用

java - GSSException : [. .] 不支持/启用使用 HMAC SHA1-96 的加密类型 AES256CTS 模式