Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W ASP.NET Core 11 Microsoft.AspNetCore.Server.HttpSys bezwarunkowo konfiguruje grupę HttpServerChannelBindProperty adresów URL przy uruchamianiu. Uwidacznia to token powiązania kanału TLS punktu końcowego RFC 5929 dla aplikacji za pośrednictwem nowego ITlsConnectionFeature.TryGetChannelBindingBytes interfejsu API, włączając scenariusze rozszerzonej ochrony na potrzeby uwierzytelniania (EPA).
Wersja wprowadzona
.NET 11
Poprzednie zachowanie
Serwery oparte na protokole HttpSys nie skonfigurowały HttpServerChannelBindProperty grupy adresów URL podczas uruchamiania, a token powiązania kanału TLS RFC 5929 nie był uwidoczniony w aplikacji.
Aplikacje mogą wyrazić zgodę, włączając Microsoft.AspNetCore.Server.HttpSys.EnableCBTHardeningAppContext przełącznik. Ten przełącznik ustawił poziom wzmacniania zabezpieczeń na Medium, ale nie ustawił HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN flagi, więc http.sys nie dostarczył CBT dla poszczególnych żądań.
ITlsConnectionFeature nie miał możliwości pobrania tokenu. Jedynym powiązanym interfejsem API był przestarzały ITlsTokenBindingFeature, który jest inną, niepowiązaną funkcją.
Nowe zachowanie
HttpSysOptions ma nową właściwość HttpAuthenticationHardeningLevel typu HttpAuthenticationHardeningLevel (Legacy, Medium, Strict), która domyślnie ma wartość Medium.
Podczas uruchamiania metody HttpSys bezwarunkowo wywołuje metodę HttpSetUrlGroupPropertyHttpServerChannelBindProperty, stosując skonfigurowany poziom wzmacniania zabezpieczeń. Dla Medium parametrów i Strictustawia również flagę HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN , aby http.sys dostarczał wartość na żądanie HTTP_REQUEST_CHANNEL_BIND_STATUS.
Nowy ITlsConnectionFeature.TryGetChannelBindingBytes(ChannelBindingKind kind, out ReadOnlyMemory<byte> channelBindingToken) zwraca punkt końcowy CBT (RFC 5929 tls-server-end-point) w uwierzytelnionych żądaniach HTTPS.
HttpSetUrlGroupProperty Jeśli wywołanie nie powiedzie się (na przykład w starym lub zablokowanym jądrze), błąd zostanie zarejestrowany, a uruchomienie będzie kontynuowane. Aplikacja działa tak, jakby Legacy została skonfigurowana.
Typ zmiany przełamującej
Ta zmiana jest zmianą behawioralną.
Przyczyna zmiany
Ta zmiana uwidacznia powiązanie kanału punktu końcowego RFC 5929 z oprogramowaniem pośredniczącym uwierzytelniania, dzięki czemu może zaimplementować rozszerzoną ochronę na potrzeby uwierzytelniania (EPA). Protokół EPA kryptograficznie wiąże uwierzytelnianie Kerberos, NTLM lub Negotiate z bazowym kanałem TLS, co zmniejsza ryzyko ataków na przekaźnik uwierzytelniania. Wcześniej żaden serwer ASP.NET Core nie uwidocznił cbt do kodu zarządzanego.
Aby uzyskać więcej informacji, zobacz dotnet/aspnetcore#67436.
Zalecana akcja
Dla większości użytkowników nie jest wymagana żadna akcja. Nowy interfejs API jest opt-in. Aplikacje, które nie są TryGetChannelBindingBytes wywoływane, nadal generują niewielki koszt żądania: w przypadku Medium wzmacniania zabezpieczeń (ustawienie domyślne), http.sys przechwytuje token powiązania kanału dla każdego żądania HTTPS i uwzględnia je w informacjach o żądaniu przekazanych do trybu użytkownika, co dodaje niewielką ilość pracy jądra i około 40 dodatkowych bajtów na żądanie. Obciążenie jest niewielkie w przypadku typowych obciążeń, ale nie zero. Aplikacje, które muszą całkowicie go wyeliminować, mogą zrezygnować z ustawienia HttpAuthenticationHardeningLevel.Legacy (zobacz poniższy fragment kodu).
Aby przywrócić zachowanie przed .NET 11, ustaw poziom wzmacniania zabezpieczeń na Legacy:
builder.WebHost.UseHttpSys(options =>
{
options.HttpAuthenticationHardeningLevel = HttpAuthenticationHardeningLevel.Legacy;
});
Po Legacy skonfigurowaniu usługa HttpSys nie ustawia flagi CBT, http.sys nie wypełnia HTTP_REQUEST_CHANNEL_BIND_STATUSelementu i TryGetChannelBindingBytes zwraca wartość false.
HttpServerChannelBindPropertyjest obsługiwany w http.sys od Windows 7 i Windows Server 2008 R2 (wydany 22 października 2009 r.), który znajduje się poniżej podłogi systemu operacyjnego dla dowolnej obsługiwanej wersji ASP.NET Core. Nie ma to wpływu na system operacyjny obsługiwany przez ASP.NET Core.
Interfejsy API, których dotyczy problem
-
Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpAuthenticationHardeningLevel(nowy) -
Microsoft.AspNetCore.Server.HttpSys.HttpAuthenticationHardeningLevel(nowe wyliczenie) -
Microsoft.AspNetCore.Http.Features.ITlsConnectionFeature.TryGetChannelBindingBytes(nowa metoda interfejsu domyślnego)