Aracılığıyla paylaş


ASP.NET Core Blazor WebAssembly ile ASP.NET Core Identity güvenli hale getirin.

Note

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.

Bu makaledeki yönergeler izlenerek tek başına Blazor WebAssembly uygulamaların güvenliği ASP.NET Core Identity ile sağlanabilir.

Kaydolma, oturum açma ve oturumu kapatma uç noktaları

ASP.NET Core Identity tarafından sağlanan ve Blazor Sayfaları temel alan SPA ve Razor uygulamaları için varsayılan kullanıcı arabirimini kullanmak yerine, ASP.NET Core MapIdentityApi ile kullanıcılara kaydolma ve oturum açma işlemleri için JSON API uç noktaları eklemek amacıyla Identity'yi arka uç API'sinde çağırın. Identity API uç noktaları, iki öğeli kimlik doğrulaması ve e-posta doğrulaması gibi gelişmiş özellikleri de destekler.

İstemcide, bir kullanıcıyı e-posta adresi ve parolasıyla kaydetmek için uç noktayı çağırın /register :

using var result = await _httpClient.PostAsJsonAsync(
    "register", new
    {
        email,
        password
    });

İstemcide, cookie kimlik doğrulaması kullanarak ve sorgu dizesini /login olarak ayarlayarak, useCookies uç noktası ile bir kullanıcının oturumunu açın.

using var result = await _httpClient.PostAsJsonAsync(
    "login?useCookies=true", new
    {
        email,
        password
    });

Arka uç sunucusu API'si kimlik doğrulama oluşturucusunda cookie çağrısıyla AddIdentityCookies kimlik doğrulamasını kurar.

builder.Services
    .AddAuthentication(IdentityConstants.ApplicationScheme)
    .AddIdentityCookies();

Belirteç kimlik doğrulaması

Bazı istemcilerin tanımlama bilgilerini (çerezleri) desteklemediği yerel mobil senaryolar için, oturum açma API'si belirteç talep etmek amacıyla bir parametre sağlar.

Warning

Tarayıcı tabanlı uygulamalar için belirteçler yerine, tarayıcının tanımlama bilgilerini JavaScript'e maruz bırakmadan işlediği için çerez kullanılmasını öneririz. Web uygulamalarında belirteç tabanlı güvenliği kullanmayı tercih ederseniz, belirteçlerin güvenli kalmasını sağlamak sizin sorumluluğundadır.

Sonraki isteklerin kimliğini doğrulamak için kullanılabilecek özel bir belirteç (ASP.NET Core Identity platformuna özel bir belirteç) verilir. Belirteç, Authorization başlığına taşıyıcı belirteç olarak geçirilmelidir. Yenileme belirteci de sağlanır. Bu belirteç, kullanıcının yeniden oturum açmaya zorlamadan eskisinin süresi dolduğunda uygulamanın yeni bir belirteç istemesine olanak tanır.

Belirteçler standart JSON Web Belirteçleri (JWT) değildir. Yerleşik Identity API öncelikli olarak basit senaryolar için tasarlandığından özel belirteçlerin kullanımı kasıtlıdır. Belirteç seçeneği, tam özellikli bir kimlik hizmeti sağlayıcısı veya belirteç sunucusu olarak tasarlanmamıştır. Bunun yerine, tanımlama bilgilerini kullanamayan istemciler için cookie seçeneğine bir alternatiftir.

Aşağıdaki kılavuz, oturum açma API'siyle belirteç tabanlı kimlik doğrulaması uygulama işlemini başlatır. Uygulamayı tamamlamak için özel kod gereklidir. Daha fazla bilgi için SPA'lar için bir Web API arka ucunu güvenli hale getirmek amacıyla Identity kullanma.

tr-TR: Arka uç sunucu API'sinin kimlik doğrulama oluşturucusunun çağrısıyla cookie kimlik doğrulamasını oluşturması AddIdentityCookies yerine, sunucu API'si taşıyıcı belirteç kimlik doğrulamasını AddBearerToken uzantı yöntemiyle ayarlar. IdentityConstants.BearerScheme ile taşıyıcı kimlik doğrulama belirteçleri için düzeni belirtin.

içinde Backend/Program.cs, kimlik doğrulama hizmetlerini ve yapılandırmasını aşağıdaki şekilde değiştirin:

builder.Services
    .AddAuthentication()
    .AddBearerToken(IdentityConstants.BearerScheme);

içinde BlazorWasmAuth/Identity/CookieAuthenticationStateProvider.cs, useCookies yönteminde LoginAsync sorgu dizesi parametresini kaldırın CookieAuthenticationStateProvider:

- login?useCookies=true
+ login

Bu noktada, istemcideki AccessTokenResponse öğesini ayrıştırmak ve erişim ile yenileme belirteçlerini yönetmek için özel kod sağlamanız gerekir. Daha fazla bilgi için SPA'lar için bir Web API arka ucunu güvenli hale getirmek amacıyla Identity kullanma.

Ek Identity senaryolar

Belge kümesinin Blazor kapsadığı senaryolar:

API tarafından sağlanan ek senaryolar hakkında bilgi için bkz: Web API arka ucunu SPAs için güvenli hale getirmek amacıyla kullanma .

  • Seçili uç noktaların güvenliğini sağlama
  • Kullanıcı bilgileri yönetimi

Hassas verileri ve kimlik bilgilerini korumak için güvenli kimlik doğrulama akışlarını kullanma

Warning

Uygulama gizli dizilerini, bağlantı dizesi'leri, kimlik bilgilerini, parolaları, kişisel kimlik numaralarını (PIN'ler), özel C#/.NET kodunu veya özel anahtarları/belirteçleri her zaman güvenli olmayan istemci tarafı kodunda depolamayın. 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 için bkz . Hassas verileri ve kimlik bilgilerini güvenli bir şekilde koruma.

Örnek uygulamalar

Bu makalede örnek uygulamalar, arka uç web API'si aracılığıyla ASP.NET Core'a Blazor WebAssembly erişen tek başına Identity uygulamalar için bir başvuru görevi görür. Tanıtım iki uygulama içerir:

  • Backend: ASP.NET Core Identityiçin kullanıcı kimlik deposu tutan bir arka uç web API'si uygulaması.
  • BlazorWasmAuth: Kullanıcı kimlik doğrulamasına sahip tek başına Blazor WebAssembly bir ön uç uygulaması.

Aşağıdaki bağlantıyla deponun kökünden en son sürüm klasörü aracılığıyla örnek uygulamalara erişin. Örnekler .NET 8 veya üzeri için sağlanır. README Örnek uygulamaları çalıştırma adımları için klasördeki dosyaya BlazorWebAssemblyStandaloneWithIdentity bakın.

Örnek kodu görüntüleme veya indirme (indirme)

Arka uç web API'si uygulama paketleri ve kodu

Arka uç web API'si uygulaması, ASP.NET Core Identityiçin bir kullanıcı kimlik deposu tutar.

Packages

Uygulama aşağıdaki NuGet paketlerini kullanır:

Uygulamanız bellek içi sağlayıcıdan farklı EF Core bir veritabanı sağlayıcısı kullanacaksa, için Microsoft.EntityFrameworkCore.InMemoryuygulamanızda paket başvurusu oluşturmayın.

Uygulamanın proje dosyasında ().csproj sabit genelleştirme yapılandırılır.

Örnek uygulama kodu

Uygulama ayarları arka uç ve ön uç URL'lerini yapılandırır:

  • Backend uygulama (BackendUrl): https://localhost:7211
  • BlazorWasmAuth uygulama (FrontendUrl): https://localhost:7171

Backend.http dosyası hava durumu veri isteğini test etmek için kullanılabilir. BlazorWasmAuth Uç noktayı test etmek için uygulamanın çalışıyor olması gerektiğini ve uç noktanın dosyaya sabit kodlandığını unutmayın. Daha fazla bilgi için bkz . Visual Studio 2022'de .http dosyalarını kullanma.

Aşağıdaki kurulum ve yapılandırma, uygulamanın Program dosyasında bulunur.

cookie kimlik doğrulamasına sahip kullanıcı kimliği, AddAuthentication ve AddIdentityCookiesçağrılarak eklenir. Yetkilendirme denetimleri için hizmetler, AddAuthorizationBuilder çağrısı ile eklenir.

Yalnızca gösterimler için önerilen uygulama, veritabanı bağlam kaydı için bellek içi veritabanı sağlayıcısınıEF Core kullanır (AddDbContext). Bellek içi veritabanı sağlayıcısı, uygulamayı yeniden başlatmayı ve kayıt ve oturum açma kullanıcı akışlarını test etme işlemini kolaylaştırır. Her çalıştırma yeni bir veritabanıyla başlar, ancak uygulama bu makalenin devamında açıklanan test kullanıcısı tohumlama tanıtım kodunu içerir. Veritabanı SQLite olarak değiştirilirse, kullanıcılar oturumlar arasında kaydedilir, ancak başlangıç öğreticisindeEF Coregösterildiği gibi veritabanının geçişler aracılığıyla oluşturulması gerekir†. Üretim kodunuz için SQL Server gibi diğer ilişkisel sağlayıcıları kullanabilirsiniz.

Note

Başlangıç kılavuzu EF Core, Visual Studio kullanırken veritabanı geçişlerini gerçekleştirmek için PowerShell komutlarını kullanır. Visual Studio'da alternatif bir yaklaşım, Bağlı Hizmetler kullanıcı arabirimini kullanmaktır:

Çözüm Gezgini'da Bağlı Hizmetler'e çift tıklayın. Hizmet Bağımlılıkları SQL Server Express LocalDB>, üç noktayı () ve ardından geçiş oluşturmak için ... veya veritabanını güncellemek için Veritabanını güncelle'yi seçin.

Identity'ı EF Core veritabanını kullanacak şekilde yapılandırın ve Identity'yi AddIdentityCore, AddEntityFrameworkStores ve AddApiEndpoints çağrıları üzerinden kullanıma açın.

Ön uç ve arka uç uygulamalarından gelen isteklere izin vermek için Çıkış Noktaları Arası Kaynak Paylaşımı (CORS) ilkesi oluşturulur. Uygulama ayarları bunları sağlamazsa geri dönüş URL'leri CORS ilkesi için yapılandırılır:

  • Backend uygulama (BackendUrl): https://localhost:5001
  • BlazorWasmAuth uygulama (FrontendUrl): https://localhost:5002

Proje, OpenAPI belgeleri üretmek için paketler ve yapılandırma içerir.

Swagger/OpenAPI hizmetleri ve uç noktaları web API'si belgelerine ve geliştirme testlerine dahil edilir. NSwag hakkında daha fazla bilgi için NSwag ve ASP.NET Core kullanmaya başlama bölümüne bakın.

Kullanıcı rolü talepleri uç noktadaki En Düşük API'den /roles gönderilir.

Identity uç noktalara rota MapIdentityApi<AppUser>() çağrılarak eşlenir.

Kullanıcıların oturumunu kapatmak için ara yazılım işlem hattında bir oturum kapatma uç noktası (/Logout) yapılandırılır.

Uç noktanın RequireAuthorization güvenliğini sağlamak için uzantı yöntemini yol tanımına ekleyin. Denetleyiciye veya aksiyona [Authorize] özniteliği ekleyin.

Bir DbContext örneğin başlatılması ve yapılandırılması için temel desenler hakkında daha fazla bilgi için belgelerdeki DbContext Yaşam Süresi, Yapılandırma ve Başlatma konularına EF Core bakın.

Tek başına ön uç Blazor WebAssembly uygulama paketleri ve kodları

Tek başına Blazor WebAssembly bir ön uç uygulaması, özel bir web sayfasına erişmek için kullanıcı kimlik doğrulamasını ve yetkilendirmesini gösterir.

Packages

Uygulama aşağıdaki NuGet paketlerini kullanır:

Örnek uygulama kodu

Klasör, Models uygulamanın modellerini içerir:

IAccountManagement Arabirimi (Identity/CookieHandler.cs) hesap yönetimi hizmetleri sağlar.

sınıfı (), tabanlı kimlik doğrulamasının durumunu işler ve arabirimi tarafından açıklanan hesap yönetimi hizmeti uygulamalarını sağlar. LoginAsync yöntemi, cookie'ün sorgu dizesi değeri aracılığıyla useCookies kimlik doğrulamasını açıkça etkinleştirir. sınıfı, kimliği doğrulanmış kullanıcılar için rol talepleri oluşturmayı da yönetir.

CookieHandler sınıfıIdentity/CookieHandler.cs, kimlik bilgilerinin her istekle birlikte arka uç web API'sine iletilmesini ve bu API'nin işlemesini sağlarken, cookie veri deposunu da korurIdentity.

Sunucu tarafı wwwroot/appsettings.file ve istemci tarafı URL uç noktaları sağlar.

App Bileşen, kimlik doğrulama durumunu basamaklı parametre olarak kullanıma sunar. Daha fazla bilgi için bkz . ASP.NET Çekirdek Blazor kimlik doğrulaması ve yetkilendirme.

MainLayout bileşeni ve NavMenu bileşeni, kullanıcının kimlik doğrulama durumuna göre içeriği seçmeli olarak görüntülemek için AuthorizeView bileşenini kullanır.

Aşağıdaki bileşenler yaygın kullanıcı kimlik doğrulama görevlerini işleyebilir ve hizmetlerden IAccountManagement yararlanıyor:

PrivatePage Bileşen (Components/Pages/PrivatePage.razor) kimlik doğrulaması gerektirir ve kullanıcının taleplerini gösterir.

Hizmetler ve yapılandırma Program dosyasında (Program.cs) sağlanır.

  • İşleyici cookie kapsamlı bir hizmet olarak kaydedilir.
  • Yetkilendirme hizmetleri kaydedilir.
  • Özel kimlik doğrulama durumu sağlayıcısı kapsamlı bir hizmet olarak kaydedilir.
  • Hesap yönetimi arabirimi (IAccountManagement) kayıtlıdır.
  • Temel ana bilgisayar URL'si kayıtlı bir HTTP istemci örneği için yapılandırılır.
  • Temel arka uç URL'si, arka uç web API'si ile kimlik doğrulaması etkileşimleri için kullanılan kayıtlı bir HTTP istemci örneği için yapılandırılır. HTTP istemcisi, her istekle birlikte kimlik bilgilerinin gönderilmesini sağlamak için cookie işleyicisini kullanırcookie.

Kullanıcının kimlik doğrulama durumu değiştiğinde çağrısı AuthenticationStateProvider.NotifyAuthenticationStateChanged yapın. Bir örnek için bkz. sınıfın LoginAsyncLogoutAsync ve CookieAuthenticationStateProvider yöntemleri (Identity/CookieAuthenticationStateProvider.cs).

Warning

AuthorizeView bileşeni, kullanıcının yetkilendirilip yetkilendirilmediğine bağlı olarak kullanıcı arabirimi içeriğini, seçmeli olarak görüntüler. Bir Blazor WebAssembly bileşene yerleştirilen bir AuthorizeView uygulamadaki tüm içerik kimlik doğrulaması olmadan bulunabilir, bu nedenle kimlik doğrulaması başarılı olduktan sonra hassas içerik arka uç sunucu tabanlı web API'sinden alınmalıdır. Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Kullanıcı tohumlama gösterimini test etme

SeedData() sınıfıSeedData.cs, geliştirme için test kullanıcılarının nasıl oluşturulacağını gösterir. Leela adlı test kullanıcısı, e-posta adresiyle leela@contoso.comuygulamada oturum açar. Kullanıcının parolası olarak Passw0rd!ayarlanır. Leela'ya yetkilendirme için Administrator ve Manager rolleri verilir, bu da kullanıcının /private-manager-page konumundaki yönetici sayfasına erişmesini sağlar fakat /private-editor-page konumundaki düzenleyici sayfasına erişimini sağlamaz.

Warning

Test kullanıcı kodunun üretim ortamında çalışmasına asla izin verme. SeedData.InitializeAsync yalnızca Development dosyasındaki Program ortamında çağrılır:

if (builder.Environment.IsDevelopment())
{
    await using var scope = app.Services.CreateAsyncScope();
    await SeedData.InitializeAsync(scope.ServiceProvider);
}

Roles

Rol talepleri, manage/info uç noktasından BlazorWasmAuth uygulamasının kullanıcıları için kullanıcı talepleri oluşturmak amacıyla geri gönderilmez. Rol talepleri, kullanıcının GetAuthenticationStateAsync projesinde kimliği doğrulandıktan sonra CookieAuthenticationStateProvider sınıfının Identity/CookieAuthenticationStateProvider.cs yöntemindeki ayrı bir istek aracılığıyla bağımsız olarak yönetilir ()Backend.

CookieAuthenticationStateProvideriçinde, sunucu API projesinin /roles uç noktasına Backend bir rol isteği gönderilir. Yanıt, ReadAsStringAsync() çağrılarak bir dizeye okunur. JsonSerializer.Deserialize dizesini özel bir RoleClaim dizisine seriden çıkarır. Son olarak, talepler kullanıcının talep koleksiyonuna eklenir.

Minimal API, Sunucu API'sinin BackendProgram dosyasındaki uç noktasını yönetir. talepleri anonim bir türe seçilir ve ile projeye geri dönmek için serileştirilir.

Rol uç noktası, RequireAuthorization çağrılarak yetkilendirme gerektirir. Minimal API'ler yerine denetleyicileri güvenli sunucu API uç noktaları için tercih ederseniz, denetleyiciler veya eylemlerde özniteliğini ayarladığınızdan emin olun.

Etki alanları arası barındırma (aynı site yapılandırması)

Örnek uygulamalar, her iki uygulamayı da aynı etki alanında barındırmak için yapılandırılır. Farklı bir etki alanında Backend uygulamasını barındırıyorsanız BlazorWasmAuth, cookie uygulamanın ConfigureApplicationCookie dosyasında Backend (Program) yapılandıran kodun açıklama satırını kaldırın. Varsayılan değerler şunlardır:

Değerleri şu şekilde değiştirin:

- options.Cookie.SameSite = SameSiteMode.Lax;
- options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
+ options.Cookie.SameSite = SameSiteMode.None;
+ options.Cookie.SecurePolicy = CookieSecurePolicy.Always;

Aynı site cookie ayarları hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Antiforgery desteği

Siteler Arası İstek Sahteciliği (CSRF) tehdidini azaltmak için yalnızca uygulamadaki /logout oturumu kapatma uç noktası (Backend) dikkat gerektirir.

Oturumu kapatma uç noktası, CSRF saldırılarını önlemek için boş bir gövdeyi denetler. Bir gövde gerektirerek, isteğin kimlik doğrulamasına cookieerişmenin tek yolu olan JavaScript'ten yapılması gerekir. Oturum kapatma uç noktasına form tabanlı bir POST tarafından erişilemiyor. Bu, kötü amaçlı bir sitenin kullanıcının oturumunu kapatmasını engeller.

Ayrıca, anonim erişimi önlemek için uç nokta yetkilendirme (RequireAuthorization) ile korunur.

İstemci BlazorWasmAuth uygulaması, isteğin gövdesinde boş bir nesne {} geçirmek için gereklidir.

Oturumu kapatma uç noktasının dışında, sahtekarlık önleme önlemleri yalnızca application/x-www-form-urlencoded, multipart/form-data veya text/plain olarak kodlanmış verileri sunucuya form olarak gönderirken gereklidir. Blazor çoğu durumda formlar için CSRF azaltmayı yönetir. Daha fazla bilgi için bkz . ASP.NET Core Blazor kimlik doğrulaması ve yetkilendirme ve ASP.NET Core Blazor formlara genel bakış.

Kodlanmış içerik ve CORS etkinleştirilmiş diğer sunucu API uç noktalarına (web API' sine) application/jsonyönelik istekler CSRF koruması gerektirmez. Bu nedenle, uygulamanın veri işleme (Backend) uç noktası için /data-processing CSRF koruması gerekmez. Hiçbir durumu değiştirmeyen bir GET uç noktası olduğundan roller (/roles) uç noktasının CSRF korumasına ihtiyacı yoktur.

Troubleshoot

Logging

Kimlik doğrulaması için hata ayıklama veya izleme günlüğünü etkinleştirmek için Blazor WebAssembly bkz . ASP.NET Çekirdek Blazor günlüğü.

Yaygın hatalar

Her projenin yapılandırmasını denetleyin. URL'lerin doğru olduğunu onaylayın:

  • Backend proje
    • appsettings.json
      • BackendUrl
      • FrontendUrl
    • Backend.http: Backend_HostAddress
  • BlazorWasmAuth proje: wwwroot/appsettings.json
    • BackendUrl
    • FrontendUrl

Yapılandırma doğru görünüyorsa:

  • Uygulama günlüklerini analiz edin.

  • Tarayıcının BlazorWasmAuth geliştirici araçlarıyla uygulama ve Backend uygulama arasındaki ağ trafiğini inceleyin. Genellikle, soruna neyin neden olduğuna dair ipucu içeren tam bir hata iletisi veya ileti, istekte bulunduktan sonra arka uç uygulaması tarafından istemciye döndürülür. Geliştirici araçları kılavuzu aşağıdaki makalelerde bulunur:

  • Google Chrome (Google belgeleri)

  • Microsoft Edge

  • Mozilla Firefox (Mozilla belgeleri)

Belge ekibi makalelerdeki belge geri bildirimlerine ve hatalarına yanıt verir. Makalenin en altındaki Belge sorunu aç bağlantısını kullanarak bir sorun açın. Ekip ürün desteği sağlayamıyor. Bir uygulamada sorun gidermeye yardımcı olmak için çeşitli genel destek forumları mevcuttur. Aşağıdakileri öneririz:

Önceki forumlar Microsoft'a ait değildir veya microsoft tarafından denetlenmemektedir.

Güvenlikle ilgili olmayan, hassas olmayan ve gizli olmayan yeniden üretilebilir çerçeve hata raporları için ASP.NET Core ürün birimiyle ilgili bir sorun açın. Sorunun nedenini ayrıntılı bir şekilde araştırıp kendi başınıza ve bir genel destek forumundaki topluluğun yardımıyla çözene kadar ürün birimiyle ilgili bir sorun açmayın. Ürün birimi, basit yanlış yapılandırma veya üçüncü taraf hizmetleri içeren kullanım örnekleri nedeniyle bozulan tek tek uygulamalarda sorun gideremez. Bir rapor doğası gereği hassas veya gizliyse veya siber saldırganların yararlanabileceği üründe olası bir güvenlik açığını açıklıyorsa bkz . Güvenlik sorunlarını ve hatalarını raporlama (dotnet/aspnetcore GitHub deposu).

Tanımlama bilgileri ve site verileri

Tanımlama bilgileri ve site verileri uygulama güncelleştirmeleri arasında kalıcı olabilir ve test ve sorun gidermeyi etkileyebilir. Uygulama kodu değişiklikleri, kullanıcı hesabı değişiklikleri veya uygulama yapılandırma değişiklikleri yaparken aşağıdakileri temizleyin:

  • Kullanıcı oturum açma tanımlama bilgileri
  • Uygulama tanımlama bilgileri
  • Önbelleğe alınan ve depolanan site verileri

Kalan tanımlama bilgilerinin ve site verilerinin test ve sorun gidermeye engel olmasını önlemeye yönelik bir yaklaşım:

  • Tarayıcı yapılandırma
    • Tarayıcı her kapatıldığında tüm cookie ve site verilerini silmek üzere yapılandırabileceğiniz test için bir tarayıcı kullanın.
    • Uygulama, test kullanıcısı veya sağlayıcı yapılandırmasında yapılan herhangi bir değişiklik için tarayıcının el ile veya IDE tarafından kapatıldığını doğrulayın.
  • Visual Studio'da InPrivate veya Gizli modda tarayıcı açmak için özel bir komut kullanın:
    • Visual Studio'nun Çalıştır düğmesinden İle Gözat iletişim kutusunu açın.
    • Ekle düğmesini seçin.
    • Program alanında tarayıcınızın yolunu belirtin. Aşağıdaki yürütülebilir yollar Windows 10 için tipik yükleme konumlarıdır. Tarayıcınız farklı bir konumda yüklüyse veya Windows 10 kullanmıyorsanız, tarayıcının yürütülebilir dosyasının yolunu sağlayın.
      • Microsoft Edge: C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
      • Google Chrome: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
      • Mozilla Firefox: C:\Program Files\Mozilla Firefox\firefox.exe
    • Bağımsız Değişkenler alanında, tarayıcının InPrivate veya Gizli modda açılması için kullandığı komut satırı seçeneğini belirtin. Bazı tarayıcılar uygulamanın URL'sini gerektirir.
      • Microsoft Edge'i kullanın -inprivate.
      • Google Chrome: --incognito --new-window {URL} kullanın, burada {URL} yer tutucu açılacak URL'dir (örneğin, https://localhost:5001).
      • Mozilla Firefox: -private -url {URL}, yer tutucunun {URL} açılacak URL olduğu yerde kullanın (örneğin, https://localhost:5001).
    • Kolay Ad alanına bir ad girin. Örneğin, Firefox Auth Testing.
    • Tamam düğmesini seçin.
    • Bir uygulamayla yapılan her test yinelemesi için tarayıcı profilini seçmek zorunda kalmamak için Varsayılan Olarak Ayarla düğmesiyle profili varsayılan olarak ayarlayın.
    • Uygulama, test kullanıcısı veya sağlayıcı yapılandırmasında yapılan herhangi bir değişiklik için tarayıcının IDE tarafından kapatıldığını doğrulayın.

Uygulama yükseltmeleri

Çalışan bir uygulama, geliştirme makinesindeki .NET SDK'sını yükselttikten veya uygulama içindeki paket sürümlerini değiştirdikten hemen sonra başarısız olabilir. Bazı durumlarda, tutarsız paketler ana yükseltmeler yaparken bir uygulamayı bozabilir. Bu sorunların çoğu şu yönergeleri izleyerek düzeltilebilir:

  1. Komut kabuğunda dotnet nuget locals all --clear yürüterek yerel sistemin NuGet paket önbelleklerini temizleyin.
  2. Proje bin ve obj klasörlerini silin.
  3. Projeyi geri yükleyin ve yeniden oluşturun.
  4. Uygulamayı yeniden dağıtmadan önce sunucudaki dağıtım klasöründeki tüm dosyaları silin.

Note

Uygulamanın hedef çerçevesiyle uyumlu olmayan paket sürümlerinin kullanımı desteklenmez. Paket hakkında bilgi için NuGet Gallerykullanın.

Kullanıcının taleplerini inceleme

Kullanıcı talepleri ile ilgili sorunları gidermek için, aşağıdaki UserClaims bileşen doğrudan uygulamalarda kullanılabilir veya daha fazla özelleştirme için temel görevi görür.

UserClaims.razor:

@page "/user-claims"
@using System.Security.Claims
@attribute [Authorize]

<PageTitle>User Claims</PageTitle>

<h1>User Claims</h1>

**Name**: @AuthenticatedUser?.Identity?.Name

<h2>Claims</h2>

@foreach (var claim in AuthenticatedUser?.Claims ?? Array.Empty<Claim>())
{
    <p class="claim">@(claim.Type): @claim.Value</p>
}

@code {
    [CascadingParameter]
    private Task<AuthenticationState>? AuthenticationState { get; set; }

    public ClaimsPrincipal? AuthenticatedUser { get; set; }

    protected override async Task OnInitializedAsync()
    {
        if (AuthenticationState is not null)
        {
            var state = await AuthenticationState;
            AuthenticatedUser = state.User;
        }
    }
}

Ek kaynaklar