Asp.Net 核心HTTP.SYS Windows身份验证回退到NTLM而不是Kerberos



我创建了一个使用 HTTP.SYS 和 Windows 身份验证的 ASP .NET Core 2.2 应用程序:

.UseHttpSys(options =>
{
options.AllowSynchronousIO = true;
options.Authentication.Schemes = Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.Negotiate | Microsoft.AspNetCore.Server.HttpSys.AuthenticationSchemes.Kerberos;
options.Authentication.AllowAnonymous = false;
options.MaxConnections = null;
options.MaxRequestBodySize = 30000000;
options.UrlPrefixes.Add("http://192.168.1.1:5000");
});

并在我的 PC 上运行(使用我当前的域用户,也是管理员(。如果我运行 Kerberos 身份验证测试器,它会显示它正在使用 NTLM(这是 Kerberos 不可用时协商的备份计划(。我的应用程序显示身份验证是协商。

如果我运行 Fiddler 并打开自动身份验证,然后重复测试,则 Kerberos 身份验证测试器将显示"无"作为身份验证(预期!(,而我的应用程序显示身份验证是 Kerberos。

为什么 Kerberos 身份验证测试器总是回退到 NTLM?

PC 运行的是 Windows 10 1803。

谢谢

最终我找到了原因。我需要在 Kerberos 身份验证测试器中指定服务器完全限定的域名,而不是计算机 IP。它神奇地奏效了。我得到的令牌是SPNEGO,而不是Kerberos,但我的理解是SPNEGO令牌包装了Kerberos或NTLM。在 SO 上查看此答案

相关内容

  • 没有找到相关文章

最新更新