从 SPN 中删除了用于 Kerberos 和协商的端口

HttpClient 用于 Kerberos协商身份验证时,非默认端口将不再包含在服务主体名称 (SPN) 中用于查找服务。 这一新的 .NET 6 行为与 .NET Core 3.1 和更早的版本一致。

旧行为

如果在非默认端口上连接到服务,则在构造用于查找服务的 SPN 时,.NET 5 包含了一个 port 组件。

新行为

从 .NET 6 开始,默认情况下,SPN 不是使用 port 组件构造的,即使对于非默认端口也是如此。

引入的版本

6.0 RC 1

中断性变更的类型

此项更改可能会影响二进制兼容性

更改原因

我们需要从 .NET Core 1.0 - 3.1 恢复客户已开始依赖的行为。

如果需要保留 .NET 5 的行为,可以将应用上下文开关 System.Net.Http.UsePortInSpn 或环境变量 DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN 设置为 true

受影响的 API