Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In ASP.NET Core 11 configura Microsoft.AspNetCore.Server.HttpSys in modo incondizionato il gruppo di URL con HttpServerChannelBindProperty all'avvio. Ciò espone l'endpoint RFC 5929 token di associazione del canale TLS (CBT) all'app tramite la nuova ITlsConnectionFeature.TryGetChannelBindingBytes API, abilitando scenari di protezione estesa per l'autenticazione (EPA).
Versione introdotta
.NET 11
Comportamento precedente
I server supportati da HttpSys non sono stati configurati HttpServerChannelBindProperty nel gruppo di URL all'avvio e il token di associazione del canale TLS RFC 5929 non è stato esposto all'app.
Le applicazioni possono acconsentire esplicitamente abilitando l'opzione Microsoft.AspNetCore.Server.HttpSys.EnableCBTHardeningAppContext . Tale opzione imposta il livello di protezione avanzata su Medium, ma non ha impostato il HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN flag, quindi http.sys non ha recapitato un CBT per richiesta.
ITlsConnectionFeature non aveva modo di recuperare il token. L'unica API correlata era l'obsoleto ITlsTokenBindingFeature, che è una funzionalità diversa e non correlata.
Nuovo comportamento
HttpSysOptions ha una nuova proprietà HttpAuthenticationHardeningLevel di tipo HttpAuthenticationHardeningLevel (Legacy, Medium, Strict) che per impostazione predefinita è Medium.
All'avvio, HttpSys chiama HttpSetUrlGroupProperty in modo incondizionato con HttpServerChannelBindProperty, applicando il livello di protezione avanzata configurato. Per Medium e Strict, imposta anche il HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN flag in modo che http.sys recapita un oggetto per ogni richiesta HTTP_REQUEST_CHANNEL_BIND_STATUS.
Il nuovo ITlsConnectionFeature.TryGetChannelBindingBytes(ChannelBindingKind kind, out ReadOnlyMemory<byte> channelBindingToken) restituisce l'endpoint CBT (RFC 5929 tls-server-end-point) nelle richieste HTTPS autenticate.
Se la HttpSetUrlGroupProperty chiamata ha esito negativo (ad esempio, in un kernel precedente o bloccato), l'errore viene registrato e l'avvio continua. L'app viene eseguita come se Legacy fosse configurata.
Tipo di cambiamento che interrompe la compatibilità
Questa modifica è una modifica funzionale.
Motivo della modifica
Questa modifica espone l'associazione del canale endpoint RFC 5929 al middleware di autenticazione in modo da poter implementare la protezione estesa per l'autenticazione (EPA). EPA associa in modo crittografico Kerberos, NTLM o Negotiate all'autenticazione TLS sottostante, attenuando gli attacchi di inoltro dell'autenticazione. In precedenza, nessun server ASP.NET Core esponeva il cbt al codice gestito.
Per altre informazioni, vedere dotnet/aspnetcore#67436.
Azione consigliata
Non è necessaria alcuna azione per la maggior parte degli utenti. La nuova API è esplicita. Le app che non chiamano TryGetChannelBindingBytes ancora comportano un costo ridotto per richiesta: con Medium la protezione avanzata (impostazione predefinita), http.sys acquisisce il token di associazione del canale per ogni richiesta HTTPS e lo include nelle informazioni sulla richiesta passate alla modalità utente, che aggiunge una piccola quantità di lavoro kernel e circa 40 byte aggiuntivi per ogni richiesta. Il sovraccarico è trascurabile per i carichi di lavoro tipici, ma non per zero. Le app che devono eliminarla completamente possono rifiutare esplicitamente l'impostazione HttpAuthenticationHardeningLevel.Legacy (vedere il frammento di codice seguente).
Per ripristinare il comportamento di pre-.NET 11, impostare il livello di protezione avanzata su Legacy:
builder.WebHost.UseHttpSys(options =>
{
options.HttpAuthenticationHardeningLevel = HttpAuthenticationHardeningLevel.Legacy;
});
Quando Legacy è configurato, HttpSys non imposta il flag CBT, http.sys non popola e TryGetChannelBindingBytes restituisce HTTP_REQUEST_CHANNEL_BIND_STATUSfalse.
HttpServerChannelBindPropertyè stato supportato in http.sys da Windows 7 e Windows Server 2008 R2 (rilasciato il 22 ottobre 2009), che si trova sotto il piano del sistema operativo per qualsiasi versione supportata ASP.NET Core. Non è interessato alcun sistema operativo supportato da ASP.NET Core.
Le API interessate
-
Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpAuthenticationHardeningLevel(nuovo) -
Microsoft.AspNetCore.Server.HttpSys.HttpAuthenticationHardeningLevel(nuova enumerazione) -
Microsoft.AspNetCore.Http.Features.ITlsConnectionFeature.TryGetChannelBindingBytes(nuovo metodo di interfaccia predefinito)