Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakın.
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 9 sürümüne bakın.
Blazor WebAssembly uygulamaları tek sayfalı uygulamalarla (SPA'lar) aynı şekilde güvenli hale getirilir. Kullanıcıların SPA'lara kimliklerini doğrulamaya yönelik çeşitli yaklaşımlar vardır, ancak en yaygın ve kapsamlı yaklaşım, OpenID Connect (OIDC) gibi OAuth 2.0 protokolüne dayalı bir uygulama kullanmaktır.
Güvenlik Blazor WebAssembly belgelerinde öncelikle kullanıcı kimlik doğrulaması ve yetkilendirme görevlerinin nasıl yerine getirilip gerçekleştireceğine odaklanılmıştır. OAuth 2.0/OIDC genel kavram kapsamı için, ana genel bakış makalesinin Ek kaynaklar bölümündeki kaynaklara bakın.
Hassas verilerin ve kimlik bilgilerinin istemci tarafı/SPA güvenliği
Bir Blazor WebAssembly uygulamanın .NET/C# kod tabanı istemcilere sunulur ve uygulamanın kodu kullanıcılar tarafından denetlenmeye ve değiştirilmeye karşı korunamaz. Hiçbir zaman uygulama gizli dizileri, bağlantı dizeleri, parolalar, güvenlik anahtarları ve özel .NET/C# kodu gibi hassas verileri Blazor WebAssembly bir uygulamaya yerleştirmeyin.
Aşağıdaki teknolojiler, geliştirme ve hazırlama/üretim ortamları arasında veri depolama sorumluluklarını bölmek için aynı uygulamada birlikte kullanılabilen hassas verileri depolamak için kullanışlıdır:
- Gizli Yönetici aracı: Yalnızca yerel geliştirme sisteminde kullanılır.
- Azure Key Vault: Geliştirme ortamında yerel olarak çalışan uygulamalar ve Hazırlama/Üretim dağıtımları için kullanılabilir.
Önceki yaklaşımların örnekleri için bkz. ASP.NET Core Blazor WebAssemblyile ASP.NET Core Identity'da hesap onayı ve parola kurtarma.
Web API istekleri
.NET/C# kodunu ve verilerini korumak için sunucu tarafı ASP.NET Core arka uç web API'si ile ASP.NET Core Data Protection özelliklerini kullanın. İstemci tarafı Blazor WebAssembly uygulaması, güvenli uygulama özellikleri ve veri işleme için sunucu tarafı web API'sini çağırır. Daha fazla bilgi için bkz. ASP.NET Core Blazor uygulama web API'sini çağırma ve bu belge düğümündeki makaleler ve örnekler.
Blazor WebAssembly uygulamaların, Çıkış Noktaları Arası İstek Paylaşımı (CORS) güvenliknedeniyle web API'lerine çıkış noktaları arasında doğrudan çağrılar yapması genellikle engellenir. Tipik bir özel durum aşağıdaki gibi görünür:
Kaynağından '{URL}' konumundan getirme erişimihttps://localhost:{PORT}' CORS ilkesi tarafından engellendi: İstenen kaynakta 'Access-Control-Allow-Origin' üst bilgisi yok. Opak yanıt gereksinimlerinize uygunsa, CORS devre dışı bırakılmış olan kaynağı getirmek için isteğin modunu 'cors yok' olarak ayarlayın.
Önceki özel durumu aşmak isteyen SetBrowserRequestMode (1) BrowserRequestMode alanıyla NoCors çağırsanız bile, istek genellikle web API'sinin kaynağındaki CORS kısıtlamaları nedeniyle başarısız olur( örneğin, yalnızca belirli kaynaklardan gelen çağrılara izin veren bir kısıtlama veya JavaScript'in tarayıcıdan gelen istekleri fetch engelleyen bir kısıtlama). Böyle çağrıların başarılı olması için tek yol, çağırdığınız web API'sinin, doğru CORS yapılandırmasıyla kaynağınızın kendi kaynağına çağrıda bulunmasına izin vermesidir. Dış web API'lerinin çoğu CORS ilkelerini yapılandırmanıza izin vermez. Bu kısıtlamayla başa çıkmak için aşağıdaki stratejilerden birini benimseyin:
Kendi sunucu tarafı ASP.NET Core arka uç web API'nizi koruyun. İstemci tarafı Blazor WebAssembly uygulaması sunucu tarafı web API'nizi çağırır ve web API'niz sunucu tabanlı C# kodundan (tarayıcı değil) doğru CORS üst bilgileriyle dış web API'sine istekte bulunur ve sonucu istemci tarafı Blazor WebAssembly uygulamanıza döndürür.
İstemci tarafı Blazor WebAssembly uygulamasından gelen isteği dış web API'sine proxy yapmak için bir proxy hizmeti kullanın. Proxy hizmeti, istemci adına istekte bulunmak için sunucu tarafı bir uygulama kullanır ve çağrı başarılı olduktan sonra sonucu döndürür. Aşağıdaki örnekte, CloudFlare'ın CORS PROXYtemelinde
{REQUEST URI}yer tutucusu istek URI'sidir:@using System.Net @inject IHttpClientFactory ClientFactory ... @code { public async Task CallApi() { var client = ClientFactory.CreateClient(); var urlEncodedRequestUri = WebUtility.UrlEncode("{REQUEST URI}"); using var request = new HttpRequestMessage(HttpMethod.Get, $"https://corsproxy.io/?{urlEncodedRequestUri}"); using var response = await client.SendAsync(request); ... } }
Kimlik doğrulaması kitaplığı
Blazor WebAssembly, Microsoft.AspNetCore.Components.WebAssembly.Authenticationkullanarak kitaplığı aracılığıyla OIDC kullanarak uygulamaların kimliğini doğrulamayı ve yetkilendirmeyi destekler. Kitaplık, ASP.NET Core arka uçlarda sorunsuz bir şekilde kimlik doğrulaması için bir dizi temel öğe sağlar. Kitaplık, OpenID Sağlayıcıları (OP) olarak adlandırılan OIDC'yi destekleyen herhangi bir üçüncü taraf Identity Sağlayıcıda (IP) kimlik doğrulaması yapabilir.
Kitaplıktaki Blazor WebAssembly (Authentication.js) kimlik doğrulama desteği, temel alınan kimlik doğrulama protokolü ayrıntılarını işlemek için kullanılan Microsoft Kimlik Doğrulama Kitaplığı'nın (MSAL, msal.js) üzerine kurulmuştur.
Blazor WebAssembly Kitaplık yalnızca Kod Değişimi (PKCE) yetkilendirme kodu akışı için Proof Key'i destekler. Örtük izin desteklenmez.
SPA'ların kimliğini doğrulamak için SameSite tanımlama bilgilerinin kullanımı gibi başka seçenekler de vardır. Ancak, mühendislik tasarımı Blazor WebAssembly uygulamalarda kimlik doğrulaması Blazor WebAssembly için en iyi seçenek olarak OAuth ve OIDC kullanır. İşlevsel ve güvenlik nedenleriyle, tabanlı kimlik doğrulaması yerine JSON Web Belirteçlerine (JWT)cookiebelirteç tabanlı kimlik doğrulaması seçildi:
- Belirteç tabanlı protokol kullanmak, belirteçler tüm isteklerde gönderilmediğinden daha az güvenlik açığı sunar.
- Belirteçler açıkça sunucuya gönderilir, bu nedenle sunucu uç noktaları Siteler Arası İstek Sahteciliği'ne (CSRF) karşı koruma gerektirmez. Bu sayede Blazor WebAssembly uygulamalarını MVC veya Razor sayfası uygulamalarıyla birlikte barındırabilirsiniz.
- Belirteçler tanımlama bilgilerinden daha dar izinlere sahiptir. Örneğin belirteçler, bu tür işlevler açıkça uygulanmadığı sürece kullanıcı hesabını yönetmek veya kullanıcının parolasını değiştirmek için kullanılamaz.
- Belirteçlerin kısa bir ömrü vardır ve bu da saldırı penceresini sınırlar. Belirteçler istediğiniz zaman iptal edilebilir.
- Bağımsız JWT'ler, istemciye ve sunucuya kimlik doğrulaması işlemiyle ilgili garantiler sunar. Örneğin, bir istemci aldığı belirteçlerin meşru olduğunu ve belirli bir kimlik doğrulaması işleminin parçası olarak yayıldığını algılama ve doğrulama araçlarına sahiptir. Bir üçüncü taraf kimlik doğrulaması işleminin ortasında bir belirteç değiştirmeye çalışırsa, istemci değiştirilmiş belirteci algılayabilir ve kullanmaktan kaçınabilir.
- OAuth ve OIDC içeren belirteçler, uygulamanın güvenli olduğundan emin olmak için kullanıcı aracısının doğru şekilde davranmasına dayanmaz.
- OAuth ve OIDC gibi belirteç tabanlı protokoller, aynı güvenlik özellikleri kümesine sahip tek başına Blazor Webassembly uygulamalarında kullanıcıların kimliğini doğrulamaya ve yetkilendirmeye olanak sağlar.
- Belirteç tabanlı protokol kullanmak, belirteçler tüm isteklerde gönderilmediğinden daha az güvenlik açığı sunar.
- Belirteçler açıkça sunucuya gönderilir, bu nedenle sunucu uç noktaları Siteler Arası İstek Sahteciliği'ne (CSRF) karşı koruma gerektirmez. Bu sayede Blazor WebAssembly uygulamalarını MVC veya Razor sayfası uygulamalarıyla birlikte barındırabilirsiniz.
- Belirteçler tanımlama bilgilerinden daha dar izinlere sahiptir. Örneğin belirteçler, bu tür işlevler açıkça uygulanmadığı sürece kullanıcı hesabını yönetmek veya kullanıcının parolasını değiştirmek için kullanılamaz.
- Belirteçlerin kısa bir ömrü vardır ve bu da saldırı penceresini sınırlar. Belirteçler istediğiniz zaman iptal edilebilir.
- Bağımsız JWT'ler, istemciye ve sunucuya kimlik doğrulaması işlemiyle ilgili garantiler sunar. Örneğin, bir istemci aldığı belirteçlerin meşru olduğunu ve belirli bir kimlik doğrulaması işleminin parçası olarak yayıldığını algılama ve doğrulama araçlarına sahiptir. Bir üçüncü taraf kimlik doğrulaması işleminin ortasında bir belirteç değiştirmeye çalışırsa, istemci değiştirilmiş belirteci algılayabilir ve kullanmaktan kaçınabilir.
- OAuth ve OIDC içeren belirteçler, uygulamanın güvenli olduğundan emin olmak için kullanıcı aracısının doğru şekilde davranmasına dayanmaz.
- OAuth ve OIDC gibi belirteç tabanlı protokoller, barındırılan Blazor WebAssembly çözüm istemcilerinin ve aynı güvenlik özelliklerine sahip tek başına Blazor Webassembly uygulamalarının kullanıcılarının kimliğini doğrulamaya ve yetkilendirmeye olanak tanır.
Önemli
Proje şablonlarında Duende Identity Server'ı Blazor benimseyen ASP.NET Core sürümleri için Duende Software, Duende Identity Server'ın üretim kullanımı için lisans ücreti ödemenizi gerektirebilir. Daha fazla bilgi için bkz. .NET 5'te ASP.NET Core'dan .NET 6'ya geçiş.
OIDC ile kimlik doğrulaması işlemi
Microsoft.AspNetCore.Components.WebAssembly.Authentication kitaplığı OIDC kullanarak kimlik doğrulaması ve yetkilendirme uygulamak için birkaç temel öğe sunar. Genel olarak, kimlik doğrulaması aşağıdaki gibi çalışır:
- Anonim bir kullanıcı oturum açma düğmesini seçtiğinde veya özniteliği uygulanmış bir Razor bileşen veya sayfa
[Authorize]yönlendirilir. - Oturum açma sayfasında, kimlik doğrulaması kitaplığı yetkilendirme uç noktasına yeniden yönlendirmeye hazırlanır. Yetkilendirme uç noktası Blazor WebAssembly uygulamasının dışındadır ve ayrı bir kaynakta barındırılabilir. Uç nokta, kullanıcının kimliğinin doğrulanıp doğrulanmadığını belirlenmesi ve yanıt olarak bir veya daha fazla belirteç verilmesinden sorumludur. Kimlik doğrulaması kitaplığı, kimlik doğrulaması yanıtını almak için bir oturum açma geri çağırması sağlar.
- Kullanıcının kimliği doğrulanmamışsa, kullanıcı genellikle ASP.NET Core Identity temel alınan kimlik doğrulaması sistemine yönlendirilir.
- Kullanıcının kimliği zaten doğrulanmışsa, yetkilendirme uç noktası uygun belirteçleri oluşturur ve tarayıcıyı yeniden oturum açma geri çağırma uç noktasına (
/authentication/login-callback) yönlendirir.
-
Blazor WebAssembly uygulamasında oturum açma geri çağırma uç noktasını (
/authentication/login-callback) yüklediğinde, kimlik doğrulaması yanıtı işlenir.- Kimlik doğrulaması işlemi başarıyla tamamlanırsa, kullanıcının kimliği doğrulanır ve isteğe bağlı olarak kullanıcının istediği özgün korumalı URL'ye geri gönderilir.
- Kimlik doğrulama işlemi herhangi bir nedenle başarısız olursa, kullanıcı bir hatanın görüntülendiği oturum açma başarısız sayfasına ()
/authentication/login-failedgönderilir.
Authentication bileşeni
Authentication bileşeni (Authentication.razor) uzaktan kimlik doğrulaması işlemlerini işler ve uygulamanın aşağıdakileri uygulamasına izin verir:
- Kimlik doğrulaması durumları için uygulama yollarını yapılandırın.
- Kimlik doğrulaması durumları için kullanıcı arabirimi içeriğini ayarlayın.
- Kimlik doğrulaması durumunu yönetme.
Bir kullanıcıya kaydolma veya oturum açma gibi kimlik doğrulaması eylemleri, Blazor çerçevesinin RemoteAuthenticatorViewCore<TAuthenticationState> bileşenine geçirilir ve bu da kimlik doğrulaması işlemleri arasında durumu kalıcı hale getiren ve denetler.
Daha fazla bilgi ve örnek için, bkz. ASP.NET Core Blazor WebAssembly ek güvenlik senaryoları.
Yetkilendirme
Blazor WebAssembly uygulamalarında, tüm istemci tarafı kodlar kullanıcılar tarafından değiştirilemediği için yetkilendirme denetimleri atlanabilir. Aynı durum, JavaScript SPA çerçeveleri veya herhangi bir işletim sistemi için yerel uygulamalar da dahil olmak üzere tüm istemci tarafı uygulama teknolojileri için geçerlidir.
İstemci tarafı uygulamanız tarafından erişilen API uç noktaları içinde her zaman sunucuda yetkilendirme denetimleri gerçekleştirin.
Kimlik doğrulamasını özelleştirme
Blazor WebAssembly, dış kimlik sağlayıcılarıyla uzaktan kimlik doğrulama işlemleri gerçekleştirmek için temel alınan Kimlik Doğrulama kitaplığı için ek parametreler ekleme ve alma yöntemleri sağlar.
Ek parametreleri geçirmek için, NavigationManager dış konum değişiklikleri gerçekleştirirken geçmiş giriş durumunu geçirmeyi ve almayı destekler. Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
- Blazor Temel Bilgiler>Yönlendirme ve gezinti makalesi
- MDN belgeleri: Geçmiş API'si
Geçmiş API’sinin depoladığı durum, uzaktan kimlik doğrulaması için şu avantajları sunar:
- Güvenli uygulama uç noktasına geçirilen durum,
authentication/loginuç noktasında kullanıcının kimliğini doğrulamak için gerçekleştirilen gezinmeye bağlanır. - Verileri kodlamak ve kod çözmek için ek işlem gerekmez.
- Güvenlik açıkları azalır. Gezinti durumunu depolamak için sorgu dizesini kullanmanın aksine, üst düzey gezinti veya farklı bir kaynaktan gelen etki Geçmiş API'sinin depoladığı durumu ayarlayamaz.
- Başarılı kimlik doğrulamasından sonra geçmiş girdisi değiştirilir, böylece geçmiş girişine eklenen durum kaldırılır ve temizleme gerektirmez.
InteractiveRequestOptions, kimlik sağlayıcısına oturum açma veya erişim belirteci sağlama isteğini temsil eder.
NavigationManagerExtensions, oturum açma işlemi için NavigateToLogin yöntemini ve oturumu kapatma işlemi için NavigateToLogout yöntemini sağlar. Yöntemler, NavigationManager.NavigateTo için çağrıda bulunarak, geçirilen bir InteractiveRequestOptions veya şunun için oluşturulmuş yeni bir InteractiveRequestOptions örneğiyle geçmiş girdi durumunu belirler:
- Dönüş URL’si için mevcut URI ile oturum açan bir kullanıcı (InteractionType.SignIn).
- Dönüş URL’siyle oturumu kapatan bir kullanıcı (InteractionType.SignOut).
Aşağıdaki kimlik doğrulaması senaryoları, ASP.NET Core Blazor WebAssembly ek güvenlik senaryoları makalesinde ele alınmıştır:
- Oturum açma işlemini özelleştirme
- Özel dönüş URL'si ile oturum kapatma
- Bir belirteci etkileşimli olarak almadan önce seçenekleri özelleştirme
- IAccessTokenProvider kullanırken seçenekleri özelleştirme
- Kimlik doğrulaması seçeneklerinden oturum açma yolunu alma
Uygulamanın tamamı için yetkilendirme gerektir
[Authorize] Aşağıdaki yaklaşımlardan birini kullanarak uygulamanın her Razor bileşenine özniteliğini (API belgeleri) uygulayın:
Uygulamanın içeri aktarmalar dosyasında,
@usingad alanı için bir Microsoft.AspNetCore.Authorization yönergesi ve@attributeözniteliği için bir[Authorize]yönerge ekleyin._Imports.razor:@using Microsoft.AspNetCore.Authorization @attribute [Authorize]Kimlik sağlayıcısına yeniden yönlendirmeye izin vermek için
Authenticationbileşenine anonim erişim izni verin. Aşağıdaki Razor koduAuthenticationbileşenine@pageyönergesi altına ekleyin.Authentication.razor:@using Microsoft.AspNetCore.Components.WebAssembly.Authentication @attribute [AllowAnonymous]yönergesi altındaki her Razor bileşene özniteliğini
@pageekleyin:@using Microsoft.AspNetCore.Authorization @attribute [Authorize]
Not
AuthorizationOptions.FallbackPolicy öğesinin RequireAuthenticatedUser ile bir ilkeye ayarlanması desteklenmez.
Uygulama başına bir kimlik sağlayıcısı uygulama kaydı kullanma
Bu Genel BakışBlazor altındaki makalelerden bazıları, iki veya daha fazla uygulama içeren barındırma senaryolarıyla ilgilidir. Tek başına Blazor WebAssembly bir uygulama, sunucu kaynaklarına ve bir sunucu uygulaması tarafından sağlanan verilere erişmek için kimliği doğrulanmış kullanıcılarla web API'sini kullanır.
Bu senaryo belge örneklerinde uygulandığında, iki kimlik sağlayıcısı kaydı kullanılır, biri istemci uygulaması için, diğeri sunucu uygulaması için. Örneğin Microsoft Entra Id'de ayrı kayıtların kullanılması kesinlikle gerekli değildir. Ancak, iki kaydın kullanılması, kayıtları uygulamaya göre yalıttığı için en iyi güvenlik uygulamasıdır. Ayrı kayıtların kullanılması, istemci ve sunucu kayıtlarının bağımsız olarak yapılandırılmasına da olanak tanır.
Bu Genel Bakış altındaki makalelerden bazıları, iki veya daha fazla uygulama içeren aşağıdaki Blazor barındırma senaryolarından biriyle ilgilidir:
- İki uygulamadan oluşan barındırılan Blazor WebAssembly bir çözüm: istemci tarafı uygulaması ve sunucu tarafı Blazor WebAssembly ASP.NET Core konak uygulaması. İstemci uygulaması erişim sunucusu kaynaklarına ve sunucu uygulaması tarafından sağlanan verilere kimliği doğrulanmış kullanıcılar.
- Sunucu kaynaklarına ve bir sunucu uygulaması tarafından sağlanan verilere erişmek için kimliği doğrulanmış kullanıcılarla web API'sini kullanan tek başına Blazor WebAssembly bir uygulama. Bu senaryo barındırılan Blazor WebAssembly bir çözüm kullanmaya benzer, ancak bu durumda istemci uygulaması sunucu uygulaması tarafından barındırılmıyor.
Bu senaryolar belge örneklerinde uygulandığında, istemci uygulaması için bir, sunucu uygulaması için bir olmak üzere iki kimlik sağlayıcısı kaydı kullanılır. Örneğin Microsoft Entra Id'de ayrı kayıtların kullanılması kesinlikle gerekli değildir. Ancak, iki kaydın kullanılması, kayıtları uygulamaya göre yalıttığı için en iyi güvenlik uygulamasıdır. Ayrı kayıtların kullanılması, istemci ve sunucu kayıtlarının bağımsız olarak yapılandırılmasına da olanak tanır.
Belirteçleri yenileme
Yenileme belirteçleri uygulamalarda güvenli hale getirilemese de Blazor WebAssembly , bunları uygun güvenlik stratejileriyle uygularsanız kullanılabilir.
.NET 6 veya sonraki sürümlerde ASP.NET Core'daki tek başına Blazor WebAssembly uygulamalar için şunları kullanmanızı öneririz:
- Kod Değişimi (PKCE) için Yazım Denetleme Anahtarı ile OAuth 2.0 Yetkilendirme Kodu akışı (Kod).
- Kısa süre sonu olan yenileme belirteci.
- Döndürülmüş yenileme belirteci.
- Kullanıcının kimlik bilgilerini yenilemek için yeni bir etkileşimli yetkilendirme akışının gerekli olduğu süre sonu olan yenileme belirteci.
Barındırılan Blazor WebAssembly çözümler için, üçüncü taraf API'lere erişmek için sunucu tarafı uygulama tarafından yenileme belirteçleri korunabilir ve kullanılabilir. Daha fazla bilgi için, bkz. ASP.NET Core Blazor WebAssembly ek güvenlik senaryoları.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
- Microsoft kimlik platformu yenileme belirteçleri: Yenileme belirteci ömrü
- Tarayıcı Tabanlı Uygulamalar için OAuth 2.0 (IETF belirtimi)
Kullanıcılar için talep oluşturma
Uygulamalar genellikle bir sunucuya yapılan web API çağrısına dayalı olarak, kullanıcılar için talep gerektirir. Örneğin, talepler genellikle bir uygulamada yetkilendirme oluşturmak için kullanılır. Bu senaryolarda uygulama hizmete erişmek için bir erişim belirteci istemektedir ve talep oluşturmak üzere kullanıcı verilerini almak için belirteci kullanır.
Örnekler için, aşağıdaki kaynaklara bakın:
- Ek senaryolar: Kullanıcıyı özelleştirme
- Microsoft Entra Id grupları ve rolleri ile ASP.NET Core Blazor WebAssembly
Prerendering desteği
Ön kayıt, kimlik doğrulaması uç noktaları (/authentication/ yol kesimi) için desteklenmez.
Ön kayıt, kimlik doğrulaması uç noktaları (/authentication/ yol kesimi) için desteklenmez.
Daha fazla bilgi için, bkz. ASP.NET Core Blazor WebAssembly ek güvenlik senaryoları.
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 bkzIdentity için Web API arka ucu güvenliğini sağlamak için kullanma.
Windows Kimlik Doğrulaması
Windows Kimlik Doğrulaması'nın Blazor Webassembly ile veya başka bir SPA çerçevesiyle kullanılmasını önermiyoruz. Active Directory Federasyon Hizmetleri (ADFS) ile OIDC gibi Windows Kimlik Doğrulaması yerine belirteç tabanlı protokoller kullanmanızı öneririz.
Windows Kimlik Doğrulaması Blazor Webassembly ile veya başka bir SPA çerçevesiyle kullanılıyorsa, uygulamayı siteler arası istek sahteciliği (CSRF) belirteçlerinden korumak için ek önlemler gerekir. Tanımlama bilgileri için geçerli olan endişelerin aynısı, Windows Kimlik Doğrulaması'nın kimlik doğrulama bağlamının çıkış noktaları arasında paylaşılmasını engelleyen bir mekanizma sunmamasıyla birlikte Windows Kimlik Doğrulaması için de geçerlidir. CSRF'den ek koruma olmadan Windows Kimlik Doğrulaması kullanan uygulamalar, en azından bir kuruluşun intraneti ile sınırlı olmalı ve açık İnternet'te kullanılmamalıdır.
Daha fazla bilgi için, bkz. ASP.NET Core'da Siteler Arası İstek Sahteciliği (XSRF/CSRF) saldırılarını önleme.
SignalR merkezinin güvenliğini sağlama
Sunucu API projesindeki bir SignalR hub'ın güvenliğini sağlamak için özniteliğini[Authorize].
Barındırılan Blazor WebAssembly (.NET 7 veya önceki sürümlerinde ASP.NET Core) ya da (.NET 8 veya sonraki sürümlerde ASP.NET Core) gibi ön kayıt içeren bir Blazor Web App istemci projesinde, ASP.NET Core BlazorSignalR kılavuzundaki yönergelere bakın.
Tek başına Blazor WebAssemblyveya tarayıcı dışı uygulamalar gibi ön kayıt olmadan bir istemci proje bileşeninde, aşağıdaki örnekte gösterildiği gibi merkez bağlantısına bir erişim belirteci sağlayın. Daha fazla bilgi için bkz. ASP.NET Core'da kimlik doğrulaması ve yetkilendirmeSignalR.
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@inject IAccessTokenProvider TokenProvider
@inject NavigationManager Navigation
...
var tokenResult = await TokenProvider.RequestAccessToken();
if (tokenResult.TryGetToken(out var token))
{
hubConnection = new HubConnectionBuilder()
.WithUrl(Navigation.ToAbsoluteUri("/chathub"),
options => { options.AccessTokenProvider = () => Task.FromResult(token?.Value); })
.Build();
...
}
Günlük Kaydı
Bu bölüm .NET 7 veya sonraki sürümlerde ASP.NET Core'daki uygulamalar için Blazor WebAssembly geçerlidir.
Hata ayıklamayı veya izleme günlüğünü etkinleştirmek için, ASP.NET Core Blazor WebAssembly günlüğü makalesinin .NET 7 veya sonraki bir sürümündeki Kimlik doğrulama günlüğü (Blazor) bölümüne bakın.
WebAssembly korumalı alanı
WebAssembly korumalı alanı , G/Ç alt sistemlerine, sistem depolamasına ve kaynaklarına ve işletim sistemine erişim dahil olmak üzere WebAssembly kodunu yürüten sistemin ortamına erişimi kısıtlar. WebAssembly kodu ile kodu yürüten sistem arasındaki yalıtım, WebAssembly'yi sistemler için güvenli bir kodlama çerçevesi haline getirir. Ancak WebAssembly, donanım düzeyinde yan kanal saldırılarına karşı savunmasızdır. Donanım kaynağını belirleme ve donanıma erişim sınırlamaları uygulama konusunda normal önlemler ve durum tespiti geçerlidir.
WebAssembly, Microsoft'a ait değildir veya microsoft tarafından korunmaz.
Daha fazla bilgi için aşağıdaki W3C kaynaklarına bakın:
- WebAssembly: Güvenlik
- WebAssembly Belirtimi: Güvenlikle İlgili Dikkat Edilmesi Gerekenler
- W3C WebAssembly Topluluk Grubu: Geri bildirim ve sorunlar: W3C WebAssembly Topluluk Grubu bağlantısı yalnızca başvuru için sağlanır ve WebAssembly güvenlik açıklarının ve hatalarının sürekli olarak düzeltme eki eklendiğini, genellikle tarayıcı tarafından bildirildiğini ve giderildiğini açıkça gösterir. Blazor Geri bildirim Microsoft ASP.NET Core ürün birimine bildirilmelidir. Microsoft ürün birimi WebAssembly ile ilgili temel bir sorunun mevcut olduğunu belirlerse, sorunu W3C WebAssembly Topluluk Grubu'na bildirmek için uygun adımları uygular.
Uygulama kılavuzu
Bu Genel Bakış altındaki makaleler, Blazor WebAssembly uygulamalarında belirli sağlayıcılara karşı kullanıcıların kimliğini doğrulaması hakkında bilgi sağlar.
Tek başına Blazor WebAssembly uygulamaları:
- OIDC sağlayıcıları ve WebAssembly Kimlik Doğrulaması Kitaplığı için genel yönergeler
- Microsoft Hesapları
- Microsoft Entra Id (ME-ID)
- Azure Active Directory (AAD) B2C
Barındırılan Blazor WebAssembly uygulamaları:
Aşağıdaki makalelerde daha fazla yapılandırma kılavuzu bulunur:
- ASP.NET Core Blazor WebAssembly ek güvenlik senaryoları
- ASP.NET Core ile Graph API kullanma Blazor WebAssembly
PKCE ile Yetkilendirme Kodu akışını kullanma
Microsoft kimlik platformunun
Microsoft örtük iznin kullanılmasını önermez.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
- MSAL'de kimlik doğrulama akışı desteği: Örtük izin
- Microsoft kimlik platformunu ve örtük izin akışını : Kimlik doğrulama kodu akışını tercih edin
- Microsoft kimlik platformu ve OAuth 2.0 yetkilendirme kodu akışı
Ek kaynaklar
- Microsoft kimlik platformu belgeleri
-
ASP.NET Core'u ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırma
- 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.
- Kimlik doğrulaması ile önceden giriş
- WebAssembly: Güvenlik
- WebAssembly Belirtimi: Güvenlikle İlgili Dikkat Edilmesi Gerekenler
ASP.NET Core