Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In ASP.NET Core 11 Microsoft.AspNetCore.Server.HttpSys konfiguriert die URL-Gruppe bedingungslos beim HttpServerChannelBindProperty Start. Dadurch wird das RFC 5929-Endpunkt-TLS-Kanalbindungstoken (CBT) über die neue ITlsConnectionFeature.TryGetChannelBindingBytes API für die App verfügbar gemacht, wodurch erweiterte Schutz für Authentifizierungsszenarien (EPA) aktiviert wird.
Eingeführt in Version
.NET 11
Bisheriges Verhalten
HttpSys-gesicherte Server haben die URL-Gruppe beim Start nicht konfiguriert HttpServerChannelBindProperty , und das RFC 5929 TLS-Kanalbindungstoken wurde für die App nicht verfügbar gemacht.
Anwendungen können sich durch Aktivieren des Microsoft.AspNetCore.Server.HttpSys.EnableCBTHardeningAppContext Schalters anmelden. Dieser Switch legt die Härtungsebene fest auf Medium, aber es hat das HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN Flag nicht festgelegt, sodass http.sys kein CBT pro Anforderung geliefert hat.
ITlsConnectionFeature hatte keine Möglichkeit, das Token abzurufen. Die einzige verknüpfte API war das jetzt veraltete ITlsTokenBindingFeatureFeature, das ein anderes, nicht verwandtes Feature ist.
Neues Verhalten
HttpSysOptions verfügt über eine neue Eigenschaft HttpAuthenticationHardeningLevel vom Typ HttpAuthenticationHardeningLevel (Legacy, Medium, Strict), die standardmäßig auf Medium.
Beim Start ruft HttpSetUrlGroupProperty HttpSys bedingungslos mit HttpServerChannelBindProperty, wobei die konfigurierte Härtestufe angewendet wird. Für Medium und Strict, es legt auch die HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN Kennzeichnung so fest, dass http.sys eine pro Anforderung HTTP_REQUEST_CHANNEL_BIND_STATUSliefert.
Die neue ITlsConnectionFeature.TryGetChannelBindingBytes(ChannelBindingKind kind, out ReadOnlyMemory<byte> channelBindingToken) gibt den Endpunkt CBT (RFC 5929 tls-server-end-point) für authentifizierte HTTPS-Anforderungen zurück.
Wenn der HttpSetUrlGroupProperty Aufruf fehlschlägt (z. B. bei einem alten oder blockierten Kernel), wird der Fehler protokolliert und der Start fortgesetzt. Die App wird wie Legacy konfiguriert ausgeführt.
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Diese Änderung macht die RFC 5929-Endpunktkanalbindung an Authentifizierungs-Middleware verfügbar, sodass sie erweiterten Schutz für Authentifizierung (EPA) implementieren kann. EPA bindet kerberos- oder NTLM- oder Negotiate-Authentifizierung kryptografisch an den zugrunde liegenden TLS-Kanal, um Authentifizierungsrelay-Angriffe zu verringern. Zuvor hat kein ASP.NET Core Server das CBT für verwalteten Code verfügbar gemacht.
Weitere Informationen finden Sie unter dotnet/aspnetcore#67436.
Empfohlene Maßnahme
Für die meisten Benutzer ist keine Aktion erforderlich. Die neue API ist opt-in. Apps, die nicht aufrufen TryGetChannelBindingBytes , verursachen immer noch kleine Kosten pro Anforderung: Mit Medium Härtung (Standardeinstellung) erfasst http.sys das Kanalbindungstoken für jede HTTPS-Anforderung und schließt es in die Anforderungsinformationen ein, die an den Benutzermodus übergeben werden, wodurch eine kleine Menge an Kernelarbeit und ungefähr 40 zusätzliche Bytes pro Anforderung hinzugefügt wird. Der Aufwand ist für typische Workloads, aber nicht für Null vernachlässigbar. Apps, die es vollständig beseitigen müssen, können sich durch Festlegen HttpAuthenticationHardeningLevel.Legacy abmelden (siehe codeausschnitt unten).
Um das Verhalten vor .NET 11 wiederherzustellen, legen Sie die Härtestufe auf :Legacy
builder.WebHost.UseHttpSys(options =>
{
options.HttpAuthenticationHardeningLevel = HttpAuthenticationHardeningLevel.Legacy;
});
Wenn Legacy sie konfiguriert ist, legt HttpSys das CBT-Flag nicht fest, http.sys wird nicht aufgefüllt HTTP_REQUEST_CHANNEL_BIND_STATUSund TryGetChannelBindingBytes zurückgegeben false.
HttpServerChannelBindPropertywird seit Windows 7 und Windows Server 2008 R2 (veröffentlicht am 22. Oktober 2009) in http.sys unterstützt, das sich unter der Betriebssystemfläche für jede unterstützte ASP.NET Core-Version befindet. Es sind keine ASP.NET Core unterstützten Betriebssysteme betroffen.
Betroffene APIs
-
Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpAuthenticationHardeningLevel(neu) -
Microsoft.AspNetCore.Server.HttpSys.HttpAuthenticationHardeningLevel(neue Enumeration) -
Microsoft.AspNetCore.Http.Features.ITlsConnectionFeature.TryGetChannelBindingBytes(neue Standardschnittstellenmethode)