HttpSys varsayılan olarak TLS kanal bağlama belirtecinin açığa çıkarmasını etkinleştirir

ASP.NET Core 11'de url Microsoft.AspNetCore.Server.HttpSys grubunu başlangıçta ile HttpServerChannelBindProperty koşulsuz olarak yapılandırıyor. Bu, RFC 5929 uç noktası TLS kanal bağlama belirtecini (CBT) yeni ITlsConnectionFeature.TryGetChannelBindingBytes API aracılığıyla uygulamaya sunarak Kimlik Doğrulaması için Genişletilmiş Koruma (EPA) senaryolarını etkinleştirir.

Sürüm kullanıma sunulmuştur

.NET 11

Önceki davranış

HttpSys destekli sunucular başlangıçta URL grubunda yapılandırılmadı HttpServerChannelBindProperty ve RFC 5929 TLS kanal bağlama belirteci uygulamaya sunulmadı.

Uygulamalar, anahtarı etkinleştirerek Microsoft.AspNetCore.Server.HttpSys.EnableCBTHardeningAppContext kabul edebilir. Bu anahtar sağlamlaştırma düzeyini Mediumolarak ayarlamış ancak bayrağı ayarlamadığından HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN http.sys istek başına CBT sunmadı.

ITlsConnectionFeature belirteci alma yolu yoktu. İlişkili tek API, artık kullanılmayan ITlsTokenBindingFeatureve farklı, ilgisiz bir özellik olan api'ydi.

Yeni davranış

HttpSysOptionstürüne (, , ) sahip ve varsayılan olarak olarak belirlenmiş yeni bir özelliği HttpAuthenticationHardeningLevel vardırMedium. StrictMediumLegacyHttpAuthenticationHardeningLevel

Başlangıçta, HttpSys ile koşulsuz olarak çağrısı HttpSetUrlGroupPropertyHttpServerChannelBindPropertyyaparak yapılandırılmış sağlamlaştırma düzeyini uygular. ve için Medium bayrağını HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN da http.sys istek HTTP_REQUEST_CHANNEL_BIND_STATUSbaşına teslim edecek şekilde Strictayarlar.

ITlsConnectionFeature.TryGetChannelBindingBytes(ChannelBindingKind kind, out ReadOnlyMemory<byte> channelBindingToken) Yeni, kimliği doğrulanmış HTTPS isteklerinde CBT (RFC 5929tls-server-end-point) uç noktasını döndürür.

HttpSetUrlGroupProperty Çağrı başarısız olursa (örneğin, eski veya engellenen bir çekirdekte), hata günlüğe kaydedilir ve başlatma devam eder. Uygulama yapılandırılmış gibi Legacy çalışır.

Kesinti yaratan değişiklik türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Bu değişiklik, Kimlik Doğrulaması için Genişletilmiş Koruma (EPA) uygulayabilmesi için RFC 5929 uç nokta kanalını kimlik doğrulama ara yazılımına bağlamayı kullanıma sunar. EPA, Kerberos, NTLM veya Negotiate kimlik doğrulamasını temel alınan TLS kanalına şifrelemeyle bağlayarak kimlik doğrulama geçişi saldırılarını azaltır. Daha önce hiçbir ASP.NET Core sunucusu CBT'yi yönetilen kodla kullanıma sunulmamıştı.

Daha fazla bilgi için bkz. dotnet/aspnetcore#67436.

Kullanıcıların çoğu için eylem gerekmez. Yeni API kabul edilir. Çağrı TryGetChannelBindingBytes yapmayan uygulamalar yine de istek başına küçük bir maliyete neden olur: sağlamlaştırma (varsayılan) ile Medium http.sys her HTTPS isteği için kanal bağlama belirtecini yakalar ve bunu kullanıcı moduna verilen istek bilgilerine ekler; bu da az miktarda çekirdek çalışması ve istek başına kabaca 40 ek bayt ekler. Ek yük, tipik iş yükleri için göz ardı edilebilir ancak sıfır değildir. Bunu tamamen ortadan kaldırması gereken uygulamalar ayarlanarak HttpAuthenticationHardeningLevel.Legacy devre dışı bırakılabilir (aşağıdaki kod parçacığına bakın).

ön .NET 11 davranışını geri yüklemek için sağlamlaştırma düzeyini olarak Legacyayarlayın:

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

Yapılandırıldığında Legacy , HttpSys CBT bayrağını ayarlamaz, http.sys öğesini doldurmaz HTTP_REQUEST_CHANNEL_BIND_STATUSve TryGetChannelBindingBytes döndürür false.

HttpServerChannelBindPropertyWindows 7 ve Windows Server 2008 R2'den (22 Ekim 2009'da yayımlandı) bu yana http.sys'da desteklenir ve desteklenen ASP.NET Core sürümleri için işletim sistemi katının altındadır. ASP.NET Core desteklenen işletim sistemi etkilenmez.

Etkilenen API'ler

  • Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.HttpAuthenticationHardeningLevel (yeni)
  • Microsoft.AspNetCore.Server.HttpSys.HttpAuthenticationHardeningLevel (yeni sabit listesi)
  • Microsoft.AspNetCore.Http.Features.ITlsConnectionFeature.TryGetChannelBindingBytes (yeni varsayılan arabirim yöntemi)