Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
No ASP.NET Core 11, Microsoft.AspNetCore.Server.HttpSys configura incondicionalmente o grupo de URLs com HttpServerChannelBindProperty no arranque. Isto expõe o token de ligação de canal TLS (CBT) do endpoint RFC 5929 à aplicação através da nova ITlsConnectionFeature.TryGetChannelBindingBytes API, permitindo cenários de Proteção Estendida para Autenticação (EPA).
Versão introduzida
.NET 11
Comportamento anterior
Os servidores suportados por HttpSys não foram configurados HttpServerChannelBindProperty no grupo de URL no arranque, e o token de ligação de canal TLS RFC 5929 não foi exposto à aplicação.
As aplicações podiam optar por ativar a Microsoft.AspNetCore.Server.HttpSys.EnableCBTHardeningAppContext comutação. Esse interruptor definiu o nível de endurecimento para Medium, mas não ativou a HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN bandeira, por isso http.sys não entregou uma TCC por pedido.
ITlsConnectionFeature não tinha forma de recuperar o token. A única API relacionada era a agora obsoleta ITlsTokenBindingFeature, que é uma funcionalidade diferente e não relacionada.
Novo comportamento
HttpSysOptions tem uma nova propriedade HttpAuthenticationHardeningLevel do tipo HttpAuthenticationHardeningLevel (Legacy, Medium, Strict) que por defeito é Medium.
No arranque, o HttpSys chama HttpSetUrlGroupProperty incondicionalmente com HttpServerChannelBindProperty, aplicando o nível de endurecimento configurado. Para Medium e Strict, também define o HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN flag para que http.sys entregue um pedido HTTP_REQUEST_CHANNEL_BIND_STATUSpor .
O novo ITlsConnectionFeature.TryGetChannelBindingBytes(ChannelBindingKind kind, out ReadOnlyMemory<byte> channelBindingToken) devolve o endpoint CBT (RFC 5929 tls-server-end-point) em pedidos HTTPS autenticados.
Se a HttpSetUrlGroupProperty chamada falhar (por exemplo, num kernel antigo ou bloqueado), a falha é registada e o arranque continua. A aplicação corre como se Legacy estivesse configurada.
Tipo de mudança disruptiva
Esta mudança é uma mudança comportamental.
Motivo da mudança
Esta alteração expõe a ligação de canal de endpoint do RFC 5929 ao middleware de autenticação para que possa implementar a Proteção Estendida para Autenticação (EPA). A EPA vincula criptograficamente a autenticação Kerberos, NTLM ou Negotiate ao canal TLS subjacente, mitigando ataques de autenticação por relé. Anteriormente, nenhum servidor ASP.NET Core expôs o CBT a código gerido.
Para mais informações, consulte dotnet/aspnetcore#67436.
Ação recomendada
Nenhuma ação é necessária para a maioria dos usuários. A nova API é opt-in. As aplicações que não chamam TryGetChannelBindingBytes ainda têm um pequeno custo por pedido: com Medium hardening (o padrão), http.sys captura o token de ligação de canal para cada pedido HTTPS e inclui-o na informação do pedido entregue ao modo utilizador, o que acrescenta um pouco de trabalho de kernel e cerca de 40 bytes extra por pedido. A sobrecarga é negligenciável para cargas de trabalho típicas, mas não é nula. As aplicações que precisam de a eliminar completamente podem optar por não participar ( HttpAuthenticationHardeningLevel.Legacy veja o excerto de código abaixo).
Para restaurar o comportamento pré-.NET 11, defina o nível de endurecimento paraLegacy:
builder.WebHost.UseHttpSys(options =>
{
options.HttpAuthenticationHardeningLevel = HttpAuthenticationHardeningLevel.Legacy;
});
Quando Legacy está configurado, o HttpSys não define a flag CBT, http.sys não preenche HTTP_REQUEST_CHANNEL_BIND_STATUS, e TryGetChannelBindingBytes devolve false.
HttpServerChannelBindPropertytem sido suportado em http.sys desde Windows 7 e Windows Server 2008 R2 (lançado a 22 de outubro de 2009), que está abaixo do piso do sistema operativo para qualquer versão ASP.NET Core suportada. Nenhum sistema operativo suportado pelo ASP.NET Core é afetado.
APIs afetadas
-
Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpAuthenticationHardeningLevel(novo) -
Microsoft.AspNetCore.Server.HttpSys.HttpAuthenticationHardeningLevel(novo enum) -
Microsoft.AspNetCore.Http.Features.ITlsConnectionFeature.TryGetChannelBindingBytes(novo método de interface por defeito)