我们最近更新到.net7,我们必须对我们的 Identity Server 项目进行一些更改。其中一项更改是在 Startup.cs 中添加这些服务:
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate(options => { });
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options => { });
我们还必须更改 API 端点中的装饰器:
[Authorize(AuthenticationSchemes = "Windows")]
对此:
[Authorize(AuthenticationSchemes = NegotiateDefaults.AuthenticationScheme)]
我怀疑由于这些更改,我们的网络应用程序在 Firefox 中停止运行。尝试联系 IS 时会返回未经授权的信息。通过互联网,我发现将 network.negotiate-auth.allow-non-fqdn 设置为 true (对于本地主机)并将域添加到 network.negotiate-auth.trusted-uris 可以解决问题,但是我想知道是否可以在 IS 中添加任何配置以避免这样做。
我发现问题是我们将 Web 服务器从 HttpSys 更改为 Kestrel。改回 HttpSys 解决了问题,但理论上我们应该使用 Kestrel,因为它是 ASP.NET Core 推荐的。