Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No ASP.NET Core 11, Microsoft.AspNetCore.Server.HttpSys configura incondicionalmente o grupo de URL com HttpServerChannelBindProperty na inicialização. Isso expõe o CBT (token de associação de canal) do TLS do ponto de extremidade RFC 5929 ao aplicativo por meio da nova ITlsConnectionFeature.TryGetChannelBindingBytes API, habilitando cenários de EPA (Proteção Estendida para Autenticação).
Versão introduzida
.NET 11
Comportamento anterior
Os servidores com suporte httpSys não configuraram HttpServerChannelBindProperty no grupo de URL na inicialização e o token de associação de canal do TLS RFC 5929 não foi exposto ao aplicativo.
Os aplicativos podem aceitar habilitando a opção Microsoft.AspNetCore.Server.HttpSys.EnableCBTHardeningAppContext . Essa opção definiu o nível de proteção como Medium, mas não definiu o HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN sinalizador, então http.sys não entregou um CBT por solicitação.
ITlsConnectionFeature não tinha como recuperar o token. A única API relacionada era a agora obsoleta ITlsTokenBindingFeature, que é um recurso diferente e não relacionado.
Novo comportamento
HttpSysOptions tem uma nova propriedade HttpAuthenticationHardeningLevel do tipo HttpAuthenticationHardeningLevel (Legacy, Medium, Strict) que usa como padrão Medium.
Na inicialização, o HttpSys chama HttpSetUrlGroupProperty incondicionalmente, HttpServerChannelBindPropertyaplicando o nível de proteção configurado. Para Medium e Strict, ele também define o HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN sinalizador para que http.sys entregue uma solicitação HTTP_REQUEST_CHANNEL_BIND_STATUS.
O novo ITlsConnectionFeature.TryGetChannelBindingBytes(ChannelBindingKind kind, out ReadOnlyMemory<byte> channelBindingToken) retorna o ponto de extremidade CBT (RFC 5929 tls-server-end-point) em solicitações HTTPS autenticadas.
Se a HttpSetUrlGroupProperty chamada falhar (por exemplo, em um kernel antigo ou bloqueado), a falha será registrada e a inicialização continuará. O aplicativo é executado como se Legacy estivesse configurado.
Tipo de mudança disruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Essa alteração expõe a associação de canal de ponto de extremidade RFC 5929 ao middleware de autenticação para que ele possa implementar a Proteção Estendida para Autenticação (EPA). A EPA associa criptograficamente a autenticação Kerberos, NTLM ou Negotiate ao canal TLS subjacente, mitigando ataques de retransmissão de autenticação. Anteriormente, nenhum servidor ASP.NET Core expôs o CBT ao código gerenciado.
Para obter mais informações, consulte dotnet/aspnetcore#67436.
Ação recomendada
Nenhuma ação é necessária para a maioria dos usuários. A nova API é aceita. Os aplicativos que não chamam TryGetChannelBindingBytes ainda incorrem em um pequeno custo por solicitação: com Medium proteção (o padrão), http.sys captura o token de associação de canal para cada solicitação HTTPS e o inclui nas informações de solicitação entregues ao modo de usuário, o que adiciona uma pequena quantidade de trabalho de kernel e cerca de 40 bytes extras por solicitação. A sobrecarga é insignificante para cargas de trabalho típicas, mas não zero. Os aplicativos que precisam eliminá-lo completamente podem optar por sair por meio da configuração HttpAuthenticationHardeningLevel.Legacy (consulte o snippet de código abaixo).
Para restaurar o comportamento pré-.NET 11, defina o nível de proteção comoLegacy:
builder.WebHost.UseHttpSys(options =>
{
options.HttpAuthenticationHardeningLevel = HttpAuthenticationHardeningLevel.Legacy;
});
Quando Legacy estiver configurado, o HttpSys não definirá o sinalizador CBT, http.sys não preencherá HTTP_REQUEST_CHANNEL_BIND_STATUSe TryGetChannelBindingBytes retornará false.
HttpServerChannelBindPropertytem suporte em http.sys desde Windows 7 e Windows Server 2008 R2 (lançado em 22 de outubro de 2009), que está abaixo do piso do sistema operacional para qualquer versão de ASP.NET Core com suporte. Nenhum sistema operacional compatível com ASP.NET Core é afetado.
APIs afetadas
-
Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpAuthenticationHardeningLevel(novo) -
Microsoft.AspNetCore.Server.HttpSys.HttpAuthenticationHardeningLevel(nova enumeração) -
Microsoft.AspNetCore.Http.Features.ITlsConnectionFeature.TryGetChannelBindingBytes(novo método de interface padrão)