Güvenli ASP.NET Core sunucu tarafı Blazor uygulamaları
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.
Bu makalede, ASP.NET Core uygulamaları olarak sunucu tarafı Blazor uygulamalarının güvenliğini sağlama açıklanmaktadır.
Sunucu tarafı Blazor uygulamalar, ASP.NET Core uygulamalarıyla aynı şekilde güvenlik için yapılandırılır. Daha fazla bilgi için, ASP.NET Core güvenlik konuları altındaki makalelere bakın.
Kimlik doğrulama bağlamı yalnızca uygulama başlatıldığında oluşturulur; bu, uygulamanın WebSocket'e ilk bağlandığı zamandır. Kimlik doğrulama bağlamı, bağlantı hattının ömrü boyunca korunur. Uygulamalar, her 30 dakikada bir kullanıcının kimlik doğrulama durumunu düzenli aralıklarla yeniden doğrular.
Uygulamanın özel hizmetler için kullanıcıları yakalaması veya kullanıcı güncelleştirmelerine tepki vermesi gerekiyorsa bkz . Sunucu tarafı ASP.NET Çekirdek Blazor ek güvenlik senaryoları.
Blazor her sayfa gezintisinde tanımlama bilgileriyle yeni HTTP isteklerinde bulunan geleneksel sunucu tarafından işlenen web uygulamalarından farklıdır. Gezinti olayları sırasında kimlik doğrulaması denetlendi. Ancak tanımlama bilgileri dahil değildir. Tanımlama bilgileri yalnızca bir sunucuya HTTP isteği gönderildiğinde gönderilir. Bu, kullanıcı uygulamada Blazor gezindiğinde böyle olmaz. Gezinti sırasında, kullanıcının kimlik doğrulama durumu bağlantı hattı içinde Blazor denetlenerek yeniden doğrulama AuthenticationStateProvider
](#additional-authentication-state-providers) kullanarak sunucuda istediğiniz zaman güncelleştirebilirsiniz.
Önemli
Gezinti sırasında kimlik doğrulamasını gerçekleştirmek için özel NavigationManager
uygulama önerilmez. Uygulamanın gezinti sırasında özel kimlik doğrulama durumu mantığı yürütmesi gerekiyorsa, özel AuthenticationStateProvider
bir kullanın.
Not
Bu makaledeki kod örnekleri, .NET 6 veya sonraki sürümlerindeki ASP.NET Core'da desteklenen null atanabilir başvuru türlerini (NTS) ve .NET derleyici null durum statik analizini benimser. ASP.NET Core 5.0 veya önceki sürümleri hedeflerken, bu makaledeki örneklerden null tür atamasını (?
) kaldırın.
Hassas verilerin ve kimlik bilgilerinin sunucu tarafı güvenliği
Test/hazırlama ve üretim ortamlarında, sunucu tarafı Blazor kod ve web API'leri, proje kodu veya yapılandırma dosyalarında kimlik bilgilerinin korunmasını önleyen güvenli kimlik doğrulama akışları kullanmalıdır. Yerel geliştirme testlerinin dışında, ortam değişkenleri en güvenli yaklaşım olmadığından hassas verileri depolamak için ortam değişkenlerinin kullanılmasından kaçınmanızı öneririz. Yerel geliştirme testinde gizli verilerin güvenliğini sağlamak için Gizli Dizi Yöneticisi aracı önerilir. Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
- Güvenli kimlik doğrulama akışları (ASP.NET Core belgeleri)
- Microsoft Azure hizmetleri için yönetilen kimlikler (Blazor belgeler)
İstemci tarafı ve sunucu tarafı yerel geliştirme ve test için gizli kimlik bilgilerinin güvenliğini sağlamak için Gizli Dizi Yöneticisi aracını kullanın.
Proje şablonu
ASP.NET CoreBlazor için Araç oluşturma başlığındaki yönergeleri izleyerek yeni bir sunucu tarafı Blazor uygulaması oluşturun.
Sunucu tarafı uygulama şablonunu seçtikten ve projeyi yapılandırdıktan sonra Kimlik doğrulama türü altında uygulamanın kimlik doğrulamasını seçin:
- Hiçbiri (varsayılan): Kimlik doğrulaması yok.
- Bireysel Hesaplar: Kullanıcı hesapları, ASP.NET Core Identitykullanılarak uygulama içinde depolanır.
- Hiçbiri (varsayılan): Kimlik doğrulaması yok.
- Bireysel Hesaplar: Kullanıcı hesapları, ASP.NET Core Identitykullanılarak uygulama içinde depolanır.
- Microsoft identity platformu: Daha fazla bilgi için bkz . ASP.NET Çekirdek Blazor kimlik doğrulaması ve yetkilendirme.
- Windows: Windows Kimlik Doğrulama'sı kullanın.
BlazorIdentity Kullanıcı Arabirimi (Bireysel Hesaplar)
Blazor, Tek Tek Hesaplar için kimlik doğrulama seçeneğini belirlediğinizde tam Blazortabanlı Identity kullanıcı arabirimi oluşturmayı destekler.
Şablon, Blazor Web App SQL Server veritabanı için kod iskelesi oluşturur Identity . Komut satırı sürümü SQLite kullanır ve için Identitybir SQLite veritabanı içerir.
Şablon:
- Kimliği doğrulanmış kullanıcılarla etkileşimli sunucu tarafı işleme (etkileşimli SSR) ve istemci tarafı işleme (CSR) senaryolarını destekler.
- Kullanıcıları oturum açma ve kapatma gibi rutin kimlik doğrulama görevleri için bileşenler ve ilgili mantık eklerIdentityRazor. Identity Bileşenler, hesap onayı ve parola kurtarma ve üçüncü taraf bir uygulama kullanarak çok faktörlü kimlik doğrulaması gibi gelişmiş Identity özellikleri de destekler. Bileşenlerin etkileşimleri Identity desteklemediğini unutmayın.
- Identityİlgili paketleri ve bağımlılıkları ekler.
- içindeki paketlere Identity başvurur
_Imports.razor
. - Özel bir kullanıcı Identity sınıfı (
ApplicationUser
) oluşturur. - Bir EF Core veritabanı bağlamı (
ApplicationDbContext
) oluşturur ve kaydeder. - Yerleşik Identity uç noktalar için yönlendirmeyi yapılandırılır.
- Doğrulamayı ve iş mantığını içerir Identity .
Çerçevenin Blazor Identity bileşenlerini incelemek için, bunlara proje şablonundaki Pages
klasörün ve Shared
klasörlerinde Account
Blazor Web App (başvuru kaynağı) erişin.
Etkileşimli WebAssembly veya Etkileşimli Otomatik işleme modlarını seçtiğinizde, sunucu tüm kimlik doğrulama ve yetkilendirme isteklerini işler ve Identity bileşenler'in ana projesindeki Blazor Web Appsunucuda statik olarak işlenir.
Çerçeve, kullanıcının kimlik doğrulama durumunu tarayıcıya akışı için hem sunucu hem de istemci (.Client
) projelerinde özel AuthenticationStateProvider bir özellik sağlar. sunucu projesi öğesini çağırırken AddAuthenticationStateSerialization
istemci projesi de öğesini çağırır AddAuthenticationStateDeserialization
. İstemci yerine sunucuda kimlik doğrulaması, uygulamanın ön kayıt sırasında ve .NET WebAssembly çalışma zamanı başlatılmadan önce kimlik doğrulama durumuna erişmesine olanak tanır. Özel AuthenticationStateProvider uygulamalar, kimlik doğrulama durumunu HTML açıklamalarına seri hale getirmek ve ardından yeni AuthenticationState bir örnek oluşturmak için WebAssembly'den geri okumak için Kalıcı Bileşen Durumu hizmetini (PersistentComponentState) kullanır. Daha fazla bilgi için s bölümündeki Kimlik doğrulama durumunu Blazor Web Appyönetme bölümüne bakın.
Yalnızca Etkileşimli Sunucu çözümleri için ( IdentityRevalidatingAuthenticationStateProvider
başvuru kaynağı), etkileşimli bir bağlantı hattının bağlı olduğu her 30 dakikada bir bağlı kullanıcı için güvenlik damgasını yeniden belirten bir sunucu tarafıdır AuthenticationStateProvider .
Etkileşimli WebAssembly veya Etkileşimli Otomatik işleme modlarını seçtiğinizde, sunucu tüm kimlik doğrulama ve yetkilendirme isteklerini işler ve Identity bileşenler'in ana projesindeki Blazor Web Appsunucuda statik olarak işlenir. Proje şablonu, sunucu ve tarayıcı arasında kullanıcının kimlik doğrulama durumunu eşitlemek için projeye bir PersistentAuthenticationStateProvider
sınıf (başvuru kaynağı) .Client
içerir. sınıfı özel bir uygulamasıdır AuthenticationStateProvider. Sağlayıcı, kimlik doğrulama durumunu önceden yüklemek ve sayfada kalıcı hale getirmek için Kalıcı Bileşen Durumu hizmetini (PersistentComponentState) kullanır.
ana projesindeBlazor Web App, kimlik doğrulama durumu sağlayıcısı (başvuru kaynağı) (Yalnızca sunucu etkileşim çözümleri) veyaPersistingRevalidatingAuthenticationStateProvider
(başvuru kaynağı) (WebAssembly veya Otomatik etkileşim çözümleri) olarak adlandırılır IdentityRevalidatingAuthenticationStateProvider
.
BlazorIdentity, bir fabrika tarafından oluşturulmayan örneklere bağlıdırDbContext. Bu durum, proje şablonunun Identity bileşenlerinin etkileşimi desteklemeden statik olarak işlenmesi için yeterli olduğu için kasıtlı DbContext olarak gerçekleştirilir.
Genel etkileşimli işleme modlarının bileşenler dışındakiIdentity bileşenlere nasıl uygulandığına ve aynı zamanda bileşenler için statik SSR'ye nasıl uygulandığına Identity ilişkin bir açıklama için bkz . ASP.NET Çekirdek Blazor işleme modları.
Önceden oluşturulmuş durumu kalıcı hale döndürme hakkında daha fazla bilgi için bkz . Prerender ASP.NET Core Razor bileşenleri.
Kullanıcı arabirimi hakkında BlazorIdentity daha fazla bilgi ve dış oturum açma bilgilerini sosyal web siteleri aracılığıyla tümleştirme yönergeleri için bkz. .NET 8'deki yenilikleridentity.
Not
.NET başvuru kaynağına yönelik belge bağlantıları genellikle deponun varsayılan dalını yükler ve bu dal .NET'in sonraki sürümü için geçerli geliştirmeyi temsil eder. Belirli bir sürümün etiketini seçmek için Dalları veya etiketleri değiştir açılan listesini kullanın. Daha fazla bilgi için bkz. ASP.NET Core kaynak kodunun sürüm etiketini seçme (dotnet/AspNetCore.Docs #26205).
s içinde Blazor Web Appkimlik doğrulama durumunu yönetme
Bu bölüm, şunları benimseyenler için Blazor Web Appgeçerlidir:
- Tek Tek Hesaplar
- İstemci tarafı işleme (CSR, WebAssembly tabanlı etkileşim).
İstemci tarafı kimlik doğrulama durumu sağlayıcısı yalnızca içinde Blazor kullanılır ve ASP.NET Core kimlik doğrulama sistemiyle tümleşik değildir. Ön kayıt sırasında, Blazor sayfada tanımlanan meta verileri dikkate alır ve kullanıcının kimliğinin doğrulanıp doğrulanmadığını belirlemek için ASP.NET Core kimlik doğrulama sistemini kullanır. Kullanıcı bir sayfadan diğerine geçtiğinde, istemci tarafı kimlik doğrulama sağlayıcısı kullanılır. Kullanıcı sayfayı yenilediğinde (tam sayfa yeniden yükleme), istemci tarafı kimlik doğrulama durumu sağlayıcısı sunucudaki kimlik doğrulama kararına dahil olmaz. Kullanıcının durumu sunucu tarafından kalıcı olmadığından, istemci tarafında tutulan herhangi bir kimlik doğrulama durumu kaybolur.
Bunu ele almak için en iyi yaklaşım, ASP.NET Core kimlik doğrulama sisteminde kimlik doğrulaması gerçekleştirmektir. İstemci tarafı kimlik doğrulama durumu sağlayıcısı yalnızca kullanıcının kimlik doğrulama durumunu yansıtmayı üstlenir. Bunu kimlik doğrulama durumu sağlayıcılarıyla gerçekleştirmeye yönelik örnekler proje şablonu tarafından Blazor Web App gösterilmiştir ve aşağıda açıklanmıştır.
Sunucu projesinin Program
dosyasında, Kalıcı Bileşen Durumu hizmetini (PersistentComponentState) kullanarak sunucu tarafı AuthenticationStateProvider tarafından döndürülenleri seri hale AuthenticationState getiren öğesini çağırınAddAuthenticationStateSerialization
:
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents()
.AddAuthenticationStateSerialization();
API yalnızca sunucu tarafı adını ve rol taleplerini tarayıcıda erişim için serileştirir. Tüm talepleri dahil etmek için true
sunucu tarafı çağrısında olarak AddAuthenticationStateSerialization
ayarlayınSerializeAllClaims
:
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents()
.AddAuthenticationStateSerialization(
options => options.SerializeAllClaims = true);
İstemci () projesinin Program
dosyasında çağrısıAddAuthenticationStateDeserialization
, öğesini çağırarak ve Kalıcı Bileşen Durumu hizmetini (PersistentComponentState) kullanarak AuthenticationStateData
sunucudan seri durumdan çıkarıldığı yeri AuthenticationState AuthenticationStateProvider ekler..Client
Sunucu projesinde öğesine karşılık gelen bir çağrı AddAuthenticationStateSerialization
olmalıdır.
builder.Services.AddAuthorizationCore();
builder.Services.AddCascadingAuthenticationState();
builder.Services.AddAuthenticationStateDeserialization();
PersistingRevalidatingAuthenticationStateProvider
(başvuru kaynağı): Etkileşimli sunucu tarafı işlemeyi (etkileşimli SSR) ve istemci tarafı işlemeyi (CSR) benimseyenler için Blazor Web App. Bu, etkileşimli bir devrenin bağlı olduğu her 30 dakikada bir bağlı kullanıcının güvenlik damgasını yeniden belirten bir sunucu tarafıdır AuthenticationStateProvider . Ayrıca, istemciye kimlik doğrulama durumunu akışla göndermek için Kalıcı Bileşen Durumu hizmetini kullanır ve bu hizmet CSR'nin ömrü boyunca sabittir.PersistingServerAuthenticationStateProvider
(başvuru kaynağı): Yalnızca CSR kullananlar için Blazor Web App. Bu, istemciye kimlik doğrulama durumunu akışla göndermek için Kalıcı Bileşen Durumu hizmetini kullanan bir sunucu tarafıdır AuthenticationStateProvider ve bu durum CSR'nin ömrü boyunca düzeltilir.PersistentAuthenticationStateProvider
(başvuru kaynağı): CSR kullananlar için Blazor Web App. Bu, sunucuda işlendiğinde sayfada kalıcı olan verileri arayarak kullanıcının kimlik doğrulama durumunu belirleyen bir istemci tarafıdır AuthenticationStateProvider . Bu kimlik doğrulama durumu CSR'nin ömrü boyunca sabittir. Kullanıcının oturum açması veya kapatması gerekiyorsa, tam sayfa yeniden yükleme gerekir. Bu yalnızca görüntüleme amacıyla bir kullanıcı adı ve e-posta sağlar. Sunucuya yönelik isteklerde bulunanHttpClient
bir cookie kullanılarak ayrı olarak işlenen sonraki isteklerde sunucuda kimlik doğrulaması yapan belirteçler içermez.
Not
.NET başvuru kaynağına yönelik belge bağlantıları genellikle deponun varsayılan dalını yükler ve bu dal .NET'in sonraki sürümü için geçerli geliştirmeyi temsil eder. Belirli bir sürümün etiketini seçmek için Dalları veya etiketleri değiştir açılan listesini kullanın. Daha fazla bilgi için bkz. ASP.NET Core kaynak kodunun sürüm etiketini seçme (dotnet/AspNetCore.Docs #26205).
İskele Identity
Sunucu tarafı bir uygulamada iskele oluşturma Identity hakkında daha fazla bilgi için bkz. ASP.NET Core projelerinde iskeleIdentity.Blazor
Sunucu tarafı Blazor uygulamasına iskele Identity oluşturun:
Dış sağlayıcılardan gelen ek talepler ve belirteçler
Dış sağlayıcılardan gelen ek talepleri depolamak için, bkz. ASP.NET Core dış sağlayıcılardan gelen ek talepleri ve belirteçleri kalıcı hale getirme.
Identity Server ile Linux üzerinde Azure App Service
Identity Server ile Linux üzerinde Azure App Service dağıtılırken sertifikayı vereni açıkça belirtin. Daha fazla bilgi için bkz. SPA'lar için Web API arka ucu güvenliğini sağlamak için kullanmaIdentity.
Kapsamı bir bileşen olan hizmetler için ekleme AuthenticationStateProvider
Doğru başlatılmamış yeni bir örneğinin AuthenticationStateProvider oluşturulmasıyla sonuçlanan özel bir kapsam içinde çözümlemeye AuthenticationStateProvider çalışma.
Kapsamı bir bileşen olan bir hizmet içinde öğesine erişmek AuthenticationStateProvider için, yönergesini @inject
veya [Inject]
özniteliğini ekleyin AuthenticationStateProvider ve bunu bir parametre olarak hizmete geçirin. Bu yaklaşım, doğru, başlatılan örneğinin AuthenticationStateProvider her kullanıcı uygulaması örneği için kullanılmasını sağlar.
ExampleService.cs
:
public class ExampleService
{
public async Task<string> ExampleMethod(AuthenticationStateProvider authStateProvider)
{
var authState = await authStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
if (user.Identity is not null && user.Identity.IsAuthenticated)
{
return $"{user.Identity.Name} is authenticated.";
}
else
{
return "The user is NOT authenticated.";
}
}
}
Hizmeti kapsamlı olarak kaydedin. Sunucu tarafı Blazor bir uygulamada, kapsamı belirlenmiş hizmetlerin ömrü istemci bağlantı devresinin süresine eşittir.
Program
dosyasında:
builder.Services.AddScoped<ExampleService>();
Startup.cs
içindeStartup.ConfigureServices
:
services.AddScoped<ExampleService>();
Aşağıdaki InjectAuthStateProvider
bileşeninde:
- Bileşeni devralır OwningComponentBase.
- AuthenticationStateProvider eklenir ve öğesine
ExampleService.ExampleMethod
geçirilir. ExampleService
ve ile OwningComponentBase.ScopedServices GetRequiredServiceçözümlenir. Bu, kullanıcının devresinin ömrü boyunca var olan doğru, başlatılan örneğiniExampleService
döndürür.
InjectAuthStateProvider.razor
:
@page "/inject-auth-state-provider"
@inherits OwningComponentBase
@inject AuthenticationStateProvider AuthenticationStateProvider
<h1>Inject <code>AuthenticationStateProvider</code> Example</h1>
<p>@message</p>
@code {
private string? message;
private ExampleService? ExampleService { get; set; }
protected override async Task OnInitializedAsync()
{
ExampleService = ScopedServices.GetRequiredService<ExampleService>();
message = await ExampleService.ExampleMethod(AuthenticationStateProvider);
}
}
@page "/inject-auth-state-provider"
@inject AuthenticationStateProvider AuthenticationStateProvider
@inherits OwningComponentBase
<h1>Inject <code>AuthenticationStateProvider</code> Example</h1>
<p>@message</p>
@code {
private string? message;
private ExampleService? ExampleService { get; set; }
protected override async Task OnInitializedAsync()
{
ExampleService = ScopedServices.GetRequiredService<ExampleService>();
message = await ExampleService.ExampleMethod(AuthenticationStateProvider);
}
}
Daha fazla bilgi için ASP.NET Core Blazor bağımlılık ekleme kılavuzuna OwningComponentBase bakın.
Özel bir içerikle önceden giriş yaparken yetkisiz içerik görüntüleniyor AuthenticationStateProvider
Bir AuthenticationStateProvider
bileşendekiAuthorizeView
içerik gibi yetkisiz içeriklerin özel bir içerikle ön oturum açma sırasında gösterilmesini önlemek için aşağıdaki yaklaşımlardan birini benimseyin:
Prerendering'i desteklemek üzere özel için uygulamaIHostEnvironmentAuthenticationStateProvider: örnek IHostEnvironmentAuthenticationStateProvideruygulaması için,'de
ServerAuthenticationStateProvider.cs
çerçevenin ServerAuthenticationStateProvider uygulamasına Blazor (başvuru kaynağı)AuthenticationStateProvider bakın.Not
.NET başvuru kaynağına yönelik belge bağlantıları genellikle deponun varsayılan dalını yükler ve bu dal .NET'in sonraki sürümü için geçerli geliştirmeyi temsil eder. Belirli bir sürümün etiketini seçmek için Dalları veya etiketleri değiştir açılan listesini kullanın. Daha fazla bilgi için bkz. ASP.NET Core kaynak kodunun sürüm etiketini seçme (dotnet/AspNetCore.Docs #26205).
Ön kayıt özelliğini devre dışı bırakma: Uygulamanın bileşen hiyerarşisinde kök bileşen olmayan en üst düzey bileşende olarak ayarlanmış
false
parametreyleprerender
işleme modunu belirtin.Not
Kök bileşeni etkileşimli hale getirme (bileşen gibi
App
) desteklenmez. Bu nedenle, prerendering bileşeni tarafındanApp
doğrudan devre dışı bırakılamaz.Proje şablonunu temel alan uygulamalar için, bileşenin Blazor Web App bileşeninde
App
(Components/App.razor
) kullanıldığı önRoutes
kayıt genellikle devre dışı bırakılır:<Routes @rendermode="new InteractiveServerRenderMode(prerender: false)" />
Ayrıca, bileşen için
HeadOutlet
ön kayıt özelliğini devre dışı bırakın:<HeadOutlet @rendermode="new InteractiveServerRenderMode(prerender: false)" />
Bileşen örneğine uygulanan
Routes
işleme modunu seçmeli olarak denetleyebilirsiniz. Örneğin bkz . ASP.NET Çekirdek Blazor işleme modları.
Ön kayıt özelliğini devre dışı bırakma: Dosyayı açın
_Host.cshtml
ve Bileşen Etiketi Yardımcısı'nın özniteliğini olarak Serverdeğiştirinrender-mode
:<component type="typeof(App)" render-mode="Server" />
- Uygulama başlamadan önce kullanıcının kimliğini doğrulama: Bu yaklaşımı benimsemek için, uygulamanın kullanıcının ilk isteğine tabanlı oturum açma sayfasıyla Identityyanıt vermesi veya kimlik doğrulaması yapılana kadar uç noktalara Blazor yönelik istekleri görüntülemesi ve engellemesi gerekir. Daha fazla bilgi için bkz . Yetkilendirmeyle korunan kullanıcı verileriyle ASP.NET Core uygulaması oluşturma. Kimlik doğrulamasından sonra, önceden oluşturulmuş Razor bileşenlerdeki yetkisiz içerik yalnızca kullanıcının içeriği görüntüleme yetkisinin gerçekten yetkisi olmadığında gösterilir.
Kullanıcı durumu yönetimi
Addaki "state" sözcüğüne rağmen, AuthenticationStateProvider genel kullanıcı durumunu depolamak için değildir. AuthenticationStateProvider yalnızca kullanıcının uygulamada kimlik doğrulama durumunu, uygulamada oturum açıp açmadığını ve kim olarak oturum açtığını gösterir.
Kimlik doğrulaması, Sayfalar ve MVC uygulamalarıyla aynı ASP.NET Core Identity kimlik doğrulamasını Razor kullanır. ASP.NET Core Identity için depolanan kullanıcı durumu, uygulamaya ek kod eklemeden akışı Blazor yapılır. Özelliklerin uygulamanın bölümlerinde etkili olması için Identity ASP.NET Core Identity makalelerindeki ve öğreticilerindeki Blazor yönergeleri izleyin.
ASP.NET Core Identitydışında genel durum yönetimi hakkında yönergeler için bkz . ASP.NET Core Blazor durum yönetimi.
Ek kimlik doğrulama durumu sağlayıcıları
Sunucuda kimlik doğrulama durumunu yönetme konusunda yardımdan AuthenticationStateProvider türetilen iki ek sınıf:
ServerAuthenticationStateProvider(başvuru kaynağı): Çerçeve tarafındanBlazor, daha belirli bir sağlayıcı kaydedilmediğinde sunucuda kimlik doğrulama durumunu yönetmek için kullanılan varsayılan AuthenticationStateProvider değerdir.
RevalidatingServerAuthenticationStateProvider (başvuru kaynağı): Konak ortamından kimlik doğrulama durumu alan ve düzenli aralıklarla yeniden doğrulayan hizmetler için AuthenticationStateProvider bir temel sınıf. Blazor Web App Örnek uygulama için proje şablonuna bakın. Varsayılan 30 dakikalık yeniden doğrulama aralığını değiştirmek için geçersiz kılın RevalidationInterval .
Not
.NET başvuru kaynağına yönelik belge bağlantıları genellikle deponun varsayılan dalını yükler ve bu dal .NET'in sonraki sürümü için geçerli geliştirmeyi temsil eder. Belirli bir sürümün etiketini seçmek için Dalları veya etiketleri değiştir açılan listesini kullanın. Daha fazla bilgi için bkz. ASP.NET Core kaynak kodunun sürüm etiketini seçme (dotnet/AspNetCore.Docs #26205).
Oturum kapatma sırasında kimlik doğrulama durumu yönetimi
Sunucu tarafı Blazor , tarayıcı sekmeleri de dahil olmak üzere bağlantı hattının kullanım ömrü boyunca kullanıcı kimlik doğrulama durumunu kalıcı hale gelir. Kullanıcı bir sekmede oturumu kapattığında bir kullanıcıyı tarayıcı sekmeleri arasında proaktif olarak kapatmak için kısa bir RevalidationIntervalile bir RevalidatingServerAuthenticationStateProvider (başvuru kaynağı) uygulamanız gerekir.
Not
.NET başvuru kaynağına yönelik belge bağlantıları genellikle deponun varsayılan dalını yükler ve bu dal .NET'in sonraki sürümü için geçerli geliştirmeyi temsil eder. Belirli bir sürümün etiketini seçmek için Dalları veya etiketleri değiştir açılan listesini kullanın. Daha fazla bilgi için bkz. ASP.NET Core kaynak kodunun sürüm etiketini seçme (dotnet/AspNetCore.Docs #26205).
Geçici yeniden yönlendirme URL'si geçerlilik süresi
Bu bölüm s için Blazor Web Appgeçerlidir.
RazorComponentsServiceOptions.TemporaryRedirectionUrlValidityDuration Sunucu tarafı işleme tarafından Blazor yayılan geçici yeniden yönlendirme URL'leri için ASP.NET Çekirdek Veri Koruması geçerliliğinin ömrünü almak veya ayarlamak için seçeneğini kullanın. Bunlar yalnızca geçici olarak kullanıldığından, yalnızca bir istemcinin URL'yi alması ve gezinmeye başlaması için yaşam süresi yeterli olmalıdır. Ancak, sunucular arasında saat dengesizliği için izin verecek kadar uzun olmalıdır. Varsayılan değer beş dakikadır.
Aşağıdaki örnekte değer yedi dakikaya uzatılır:
builder.Services.AddRazorComponents(options =>
options.TemporaryRedirectionUrlValidityDuration =
TimeSpan.FromMinutes(7));
Ek kaynaklar
- Hızlı Başlangıç: Microsoft ile ASP.NET Core web uygulamasına oturum açma ekleme
- Hızlı Başlangıç: Microsoft identity platformuyla ASP.NET Core web API'sini koruma
- ASP.NET Core'ı ara sunucularla ve yük dengeleyicilerle çalışacak şekilde yapılandırma: Aşağıdakilere ilişkin yönergeler içerir:
- Ara sunucular ve iç ağlar arasında HTTPS şeması bilgilerini korumak için İletilen Üst Bilgiler Ara Yazılımını kullanma.
- El ile düzen yapılandırması, doğru istek yönlendirme için istek yolu değişiklikleri ve Linux ve IIS dışı ters ara sunucular için istek şemasını iletme gibi ek senaryolar ve kullanım örnekleri.
ASP.NET Core