Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I ASP.NET Core 11 Microsoft.AspNetCore.Server.HttpSys konfigurerar villkorslöst URL-gruppen med HttpServerChannelBindProperty vid start. Detta exponerar RFC 5929-slutpunktens TLS-kanalbindningstoken (CBT) för appen via det nya ITlsConnectionFeature.TryGetChannelBindingBytes API:et, vilket möjliggör extended protection for authentication (EPA) scenarier.
Version lanserad
.NET 11
Tidigare beteende
HttpSys-backade servrar konfigurerades HttpServerChannelBindProperty inte på URL-gruppen vid start och RFC 5929 TLS-kanalbindningstoken exponerades inte för appen.
Program kan anmäla sig genom att aktivera växeln Microsoft.AspNetCore.Server.HttpSys.EnableCBTHardeningAppContext . Den växeln anger härdningsnivån till Medium, men den angav HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN inte flaggan, så http.sys inte leverera en KBT per begäran.
ITlsConnectionFeature hade inget sätt att hämta token. Det enda relaterade API:et var den nu föråldrade ITlsTokenBindingFeature, som är en annan, orelaterad funktion.
Nytt beteende
HttpSysOptions har en ny egenskap HttpAuthenticationHardeningLevel av typen HttpAuthenticationHardeningLevel (Legacy, Medium, Strict) som standard är Medium.
Vid start anropar HttpSetUrlGroupProperty HttpSys villkorslöst med HttpServerChannelBindPropertyoch tillämpar den konfigurerade härdningsnivån. För Medium och Strictanger HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN den också flaggan så att http.sys levererar en per begäran HTTP_REQUEST_CHANNEL_BIND_STATUS.
Den nya ITlsConnectionFeature.TryGetChannelBindingBytes(ChannelBindingKind kind, out ReadOnlyMemory<byte> channelBindingToken) returnerar slutpunkts-KBT (RFC 5929 tls-server-end-point) på autentiserade HTTPS-begäranden.
Om anropet HttpSetUrlGroupProperty misslyckas (till exempel på en gammal eller blockerad kernel) loggas felet och starten fortsätter. Appen körs som om Legacy den var konfigurerad.
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Den här ändringen exponerar RFC 5929-slutpunktskanalbindningen till mellanprogram för autentisering så att den kan implementera Extended Protection for Authentication (EPA). EPA binder kryptografiskt Kerberos, NTLM eller Negotiate-autentisering till den underliggande TLS-kanalen, vilket minimerar autentiseringsreläattacker. Tidigare exponerade ingen ASP.NET Core-servern KBT för hanterad kod.
Mer information finns i dotnet/aspnetcore#67436.
Rekommenderad åtgärd
Inga åtgärder krävs för de flesta användare. Det nya API:et är anmält. Appar som inte anropar TryGetChannelBindingBytes medför fortfarande en liten kostnad per begäran: med Medium härdning (standard) samlar http.sys in kanalbindningstoken för varje HTTPS-begäran och inkluderar den i begärandeinformationen som lämnas till användarläge, vilket lägger till en liten mängd kernelarbete och ungefär 40 extra byte per begäran. Omkostnaderna är försumbara för vanliga arbetsbelastningar men inte noll. Appar som behöver eliminera det helt kan välja bort genom att ange HttpAuthenticationHardeningLevel.Legacy (se kodfragmentet nedan).
Om du vill återställa beteendet före .NET 11 anger du härdningsnivån till Legacy:
builder.WebHost.UseHttpSys(options =>
{
options.HttpAuthenticationHardeningLevel = HttpAuthenticationHardeningLevel.Legacy;
});
När Legacy har konfigurerats anger HttpSys inte CBT-flaggan, http.sys fyller inte i HTTP_REQUEST_CHANNEL_BIND_STATUSoch TryGetChannelBindingBytes returnerar false.
HttpServerChannelBindPropertyhar stöd i http.sys sedan Windows 7 och Windows Server 2008 R2 (släpptes 22 oktober 2009), som ligger under operativsystemets golv för alla ASP.NET Core version som stöds. Inga ASP.NET Core operativsystem som stöds påverkas.
Berörda API:er
-
Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpAuthenticationHardeningLevel(ny) -
Microsoft.AspNetCore.Server.HttpSys.HttpAuthenticationHardeningLevel(nytt uppräkning) -
Microsoft.AspNetCore.Http.Features.ITlsConnectionFeature.TryGetChannelBindingBytes(ny standardgränssnittsmetod)
ASP.NET Core