HttpSys ve výchozím nastavení povoluje vystavení tokenu vazby kanálu TLS.

V ASP.NET Core 11 Microsoft.AspNetCore.Server.HttpSys bezpodmínečně nakonfiguruje skupinu HttpServerChannelBindProperty adres URL při spuštění. Tím se pro aplikaci zpřístupní token vazby kanálu TLS koncového bodu RFC 5929 (CBT) prostřednictvím nového ITlsConnectionFeature.TryGetChannelBindingBytes rozhraní API, což umožňuje scénáře rozšířené ochrany pro ověřování (EPA).

Verze byla představena

.NET 11

Předchozí chování

Servery s podporou HttpSys nebyly při spuštění nakonfigurovány HttpServerChannelBindProperty ve skupině adres URL a token vazby kanálu TLS RFC 5929 nebyl pro aplikaci zpřístupněn.

Aplikace se můžou přihlásit povolením Microsoft.AspNetCore.Server.HttpSys.EnableCBTHardeningAppContext přepínače. Tento přepínač nastavil úroveň posílení zabezpečení na Medium, ale nenastavil HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN příznak, takže http.sys nedoručil CBT pro jednotlivé požadavky.

ITlsConnectionFeature neměl žádný způsob, jak token načíst. Jediné související rozhraní API bylo nyní zastaralé ITlsTokenBindingFeature, což je jiná nesouvisející funkce.

Nové chování

HttpSysOptions má novou vlastnost HttpAuthenticationHardeningLevel typu HttpAuthenticationHardeningLevel (Legacy, Medium, Strict), která má výchozí hodnotu Medium.

Při spuštění httpSys bezpodmínečně volá HttpSetUrlGroupProperty s HttpServerChannelBindProperty, použití nakonfigurované úrovně posílení zabezpečení. Pro Medium a Stricttaké nastaví HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN příznak tak, aby http.sys doručovat jednotlivé požadavky HTTP_REQUEST_CHANNEL_BIND_STATUS.

Nová ITlsConnectionFeature.TryGetChannelBindingBytes(ChannelBindingKind kind, out ReadOnlyMemory<byte> channelBindingToken) vrátí koncový bod CBT (RFC 5929 tls-server-end-point) u ověřených požadavků HTTPS.

Pokud volání HttpSetUrlGroupProperty selže (například ve starém nebo zablokovaném jádru), dojde k zaprotokolování selhání a spuštění bude pokračovat. Aplikace se spustí tak, jako kdyby Legacy byla nakonfigurovaná.

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Tato změna zveřejňuje vazbu kanálu koncového bodu RFC 5929 pro middleware ověřování, aby mohla implementovat rozšířenou ochranu pro ověřování (EPA). CRYPTOgraficky sváže Protokol Kerberos, NTLM nebo Vyjednat ověřování s podkladovým kanálem TLS, který snižuje riziko útoků na předávací ověřování. Dříve žádný ASP.NET Core server nezopravuje CBT spravovanému kódu.

Další informace najdete v tématu dotnet/aspnetcore#67436.

Většina uživatelů nevyžaduje žádnou akci. Nové rozhraní API je výslovné souhlas. U aplikací, které se nezavolají TryGetChannelBindingBytes , se stále účtují malé náklady na požadavek: s posílením Medium zabezpečení (výchozí) http.sys zachytí token vazby kanálu pro každý požadavek HTTPS a zahrne ho do uživatelského režimu s informacemi o požadavku, které přidají malé množství práce jádra a přibližně 40 dalších bajtů na požadavek. Režie je pro typické úlohy zanedbatelná, ale ne nula. Aplikace, které je potřeba úplně eliminovat, se můžou odhlásit nastavením HttpAuthenticationHardeningLevel.Legacy (viz fragment kódu níže).

Pokud chcete obnovit chování před .NET 11, nastavte úroveň posílení zabezpečení na Legacy:

builder.WebHost.UseHttpSys(options =>
{
    options.HttpAuthenticationHardeningLevel = HttpAuthenticationHardeningLevel.Legacy;
});

Když Legacy je nakonfigurovaný, HttpSys nenastaví příznak CBT, http.sys nenaplní HTTP_REQUEST_CHANNEL_BIND_STATUSa TryGetChannelBindingBytes vrátí false.

HttpServerChannelBindPropertyv http.sys od Windows 7 a Windows Server 2008 R2 (vydaná 22. října 2009), která je pod podlahou operačního systému pro všechny podporované verze ASP.NET Core. Není ovlivněn žádný ASP.NET Core podporovaný operační systém.

Ovlivněná rozhraní API

  • Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpAuthenticationHardeningLevel (nový)
  • Microsoft.AspNetCore.Server.HttpSys.HttpAuthenticationHardeningLevel (nový výčet)
  • Microsoft.AspNetCore.Http.Features.ITlsConnectionFeature.TryGetChannelBindingBytes (nová výchozí metoda rozhraní)