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.
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.
Warning
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.
Bu makale, kimlik doğrulama amaçlı Microsoft Entra (ME-ID) kullanan tek başına bir uygulamanın nasıl oluşturulacağını açıklar.
Bu makaleyi okuduktan sonra ek güvenlik senaryosu kapsamı için bkz . ASP.NET Çekirdek Blazor WebAssembly ek güvenlik senaryoları.
Walkthrough
Gezinti bilgisinin alt bölümlerinde aşağıdakilerin nasıl yapılacağı açıklanmaktadır:
- Azure'da kiracı oluşturma
- Azure'da uygulama kaydetme
- Blazor Uygulamayı oluşturma
- Uygulamayı çalıştırma
Azure'da kiracı oluşturma
Hızlı Başlangıç: ME-ID'de kiracı oluşturmak için kiracı ayarlama bölümünde yer alan yönergeleri izleyin.
Azure'da uygulama kaydetme
ME-ID uygulamasını kaydetme:
- Azure portalında Microsoft Entra Kimliği'ne gidin. Kenar çubuğunda Uygulama kayıtları seçin. Yeni kayıt düğmesini seçin.
- Uygulama için bir Ad sağlayın (örneğin, Blazor Standalone ME-ID MS Accounts).
- Desteklenen hesap türleri bölümünde Herhangi bir kuruluş dizinindeki hesaplar (Herhangi bir Microsoft Entra ID dizini – Çok Kiracılı) öğesini seçin.
-
Yeniden Yönlendirme URI açılan listesini Tek sayfalı uygulama (SPA) olarak ayarlayın ve aşağıdaki yeniden yönlendirme URI'sini sağlayın:
https://localhost/authentication/login-callback. Azure varsayılan konağı (örneğin,azurewebsites.net) veya özel etki alanı konağı (örneğin,contoso.com) için üretim yeniden yönlendirme URI'sini biliyorsanız,localhostyeniden yönlendirme URI'sini sağladığınız anda, üretim yeniden yönlendirme URI'sini de ekleyebilirsiniz. Eklediğiniz üretim yeniden yönlendirme URI'lerine, standart olmayan bağlantı noktaları için bağlantı noktası numarasını eklediğinizden emin olun. - Onaylanmamış bir yayımcı etki alanı kullanıyorsanız, İzinler>OpenId ve offline_access izinleri için yönetici onayı ver onay kutusunu kaldırın. Yayımcı alan adı doğrulanmışsa, bu onay kutusu görünmez.
- Kaydıseçin.
Note
ME-ID yeniden yönlendirme URI'si için localhost bağlantı noktası numarası sağlamak gerekli değildir. Daha fazla bilgi için bkz: Yeniden yönlendirme URI'si (yanıt URL'si) kısıtlamaları ve sınırlamaları: Localhost özel durumları (Entra belgeleri).
Uygulama (istemci) kimliğini (örneğin, 00001111-aaaa-2222-bbbb-3333cccc4444) kaydedin.
Kimlik Doğrulama>Platformu yapılandırma>Tek sayfalı uygulama:
- yeniden yönlendirme URI'sinin
https://localhost/authentication/login-callbackmevcut olduğunu onaylayın. - İmlicit İzin bölümünde, Erişim belirteçleri ve Kimlik belirteçleri için onay kutularının seçili olmadığından emin olun. MSAL v2.0 veya üzerini kullanan uygulamalar için Blazor örtük yetkilendirme önerilmez. Daha fazla bilgi için bkz . Secure ASP.NET Core Blazor WebAssembly.
- Uygulamanın kalan varsayılanları bu deneyim için kabul edilebilir.
- Değişiklik yaptıysanız Kaydet düğmesini seçin.
Blazor Uygulamayı oluşturma
Uygulamayı oluşturun. Aşağıdaki komuttaki yer tutucuları daha önce kaydedilen bilgilerle değiştirin ve bu komutu bir komut kabuğunda yürütün.
dotnet new blazorwasm -au SingleOrg --client-id "{CLIENT ID}" --tenant-id "common" -o {PROJECT NAME}
| Placeholder | Azure portal adı | Example |
|---|---|---|
{PROJECT NAME} |
— | BlazorSample |
{CLIENT ID} |
Uygulama (istemci) kimliği | 00001111-aaaa-2222-bbbb-3333cccc4444 |
-o|--output seçeneğiyle belirtilen çıkış konumu, eğer mevcut değilse bir proje klasörü oluşturur ve bu klasör proje adının bir parçası olur.
Bir çift MsalProviderOptions ekleyin ve openidoffline_access için DefaultAccessTokenScopes:
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.DefaultAccessTokenScopes.Add("openid");
options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
});
Uygulamayı çalıştırma
Uygulamayı çalıştırmak için aşağıdaki yaklaşımlardan birini kullanın:
- Visual Studio
- Çalıştır düğmesini seçin.
- Menüden Hata Ayıklama>Hata Ayıklamayı Başlat kullanın.
- F5 tuşuna basın.
- .NET CLI komut kabuğu: Uygulamanın klasöründen
dotnet watch(veyadotnet run) komutunu yürütür.
Uygulamanın bölümleri
Bu bölümde, bir uygulamanın proje şablonundan Blazor WebAssembly oluşturulan bölümleri ve uygulamanın nasıl yapılandırıldığı açıklanmaktadır. Uygulamayı İzlenecek Yol bölümündeki yönergeleri kullanarak oluşturduysanız temel bir çalışma uygulaması için bu bölümde izlenecek belirli bir kılavuz yoktur. Bu bölümdeki yönergeler, kullanıcıların kimliğini doğrulamak ve yetkilendirmek için bir uygulamayı güncelleştirmeye yardımcı olur. Ancak, bir uygulamayı güncelleştirmeye alternatif bir yaklaşım, İzlenecek Yol bölümündeki kılavuzdan yeni bir uygulama oluşturmak ve uygulamanın bileşenlerini, sınıflarını ve kaynaklarını yeni uygulamaya taşımaktır.
Kimlik doğrulama paketi
İş veya Okul Hesaplarını SingleOrg kullanmak üzere bir uygulama oluşturulduğunda, uygulama otomatik olarak Microsoft Kimlik Doğrulama Kitaplığı Microsoft.Authentication.WebAssembly.Msal için bir paket referansı alır. Paket, uygulamanın kullanıcıların kimliğini doğrulamasına ve korumalı API'leri çağırmak için belirteçleri almasına yardımcı olan bir dizi temel öğe sağlar.
Uygulamaya kimlik doğrulaması ekliyorsanız paketi uygulamaya el ile ekleyin Microsoft.Authentication.WebAssembly.Msal .
Note
.NET uygulamalarına paket ekleme hakkında yönergeler için, Paket tüketimi iş akışında (NuGet belgeleri)paketleri yüklemek ve yönetmek altındaki makalelere bakın. NuGet.org'da doğru paket sürümlerini onaylayın.
Paket, uygulamaya geçişli olarak Microsoft.Authentication.WebAssembly.Msal paketi ekler Microsoft.AspNetCore.Components.WebAssembly.Authentication.
Kimlik doğrulama hizmeti desteği
Kullanıcıların kimliğini doğrulama desteği, AddMsalAuthentication paketinin sağladığı Microsoft.Authentication.WebAssembly.Msal uzantı yöntemiyle hizmet kapsayıcısına kaydedilir. Bu yöntem, uygulamanın Sağlayıcı (IP) ile Identity etkileşim kurması için gereken tüm hizmetleri ayarlar.
Program dosyasında:
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
});
yöntemi, AddMsalAuthentication bir uygulamanın kimliğini doğrulamak için gereken parametreleri yapılandırmak için bir geri çağırma kabul eder. Uygulamayı yapılandırmak için gereken değerler, uygulamayı kaydettiğinizde ME-ID yapılandırmasından alınabilir.
wwwroot/appsettings.json yapılandırması
Yapılandırma, wwwroot/appsettings.json dosyası tarafından sağlanır.
{
"AzureAd": {
"Authority": "https://login.microsoftonline.com/common",
"ClientId": "{CLIENT ID}",
"ValidateAuthority": true
}
}
Example:
{
"AzureAd": {
"Authority": "https://login.microsoftonline.com/common",
"ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"ValidateAuthority": true
}
}
Erişim belirteci kapsamları
Şablon, Blazor WebAssembly uygulamayı otomatik olarak güvenli bir API için erişim belirteci istemek üzere yapılandırmaz. Oturum açma akışının bir parçası olarak erişim belirtecini sağlamak için kapsamı varsayılan erişim belirteci kapsamlarına MsalProviderOptions ekleyin:
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.DefaultAccessTokenScopes.Add("{SCOPE URI}");
});
Ek kapsamları AdditionalScopesToConsent belirleyin.
options.ProviderOptions.AdditionalScopesToConsent.Add("{ADDITIONAL SCOPE URI}");
Note
AdditionalScopesToConsent Microsoft Graph için, Microsoft Azure'da kayıtlı bir uygulamayı kullanıcı ilk kez kullandığında, Microsoft Entra ID onay kullanıcı arabirimi aracılığıyla. Daha fazla bilgi için bkz . ASP.NET Core Blazor WebAssemblyile Graph API'sini kullanma.
Daha fazla bilgi için Ek senaryolar makalesinin aşağıdaki bölümlerine bakın:
- Ek erişim belirteçleri isteme
- Giden isteklere belirteç ekleme
- Hızlı Başlangıç: Web API'lerini kullanıma sunan bir uygulama yapılandırma
Oturum açma modu
Çerçeve varsayılan olarak açılır oturum açma moduna geçer ve açılır pencere açılamıyorsa yeniden yönlendirme oturum açma moduna geri döner.
LoginMode özelliğini MsalProviderOptions olarak ayarlayarak MSAL'yi yeniden yönlendirme oturum açma modunu kullanacak şekilde yapılandırın.
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.LoginMode = "redirect";
});
Varsayılan ayar popup ve dize değeri büyük/küçük harfe duyarlı değildir.
Dosyayı içeri aktarır
Ad alanı Microsoft.AspNetCore.Components.Authorization, uygulama genelinde _Imports.razor dosyası aracılığıyla erişilebilir kılınır.
...
@using Microsoft.AspNetCore.Components.Authorization
...
Dizin sayfası
Dizin (wwwroot/index.html) sayfası, JavaScript'te AuthenticationService tanımlayan bir kod içerir.
AuthenticationService OIDC protokolünün alt düzey ayrıntılarını işler. Uygulama, kimlik doğrulama işlemlerini gerçekleştirmek için betikte tanımlanan yöntemleri dahili olarak çağırır.
<script src="_content/Microsoft.Authentication.WebAssembly.Msal/AuthenticationService.js"></script>
Uygulama bileşeni
Bileşen App (App.razor), uygulamalarda bulunan App bileşene Blazor Server benzer:
-
AuthorizeRouteView bileşeni, geçerli kullanıcının belirli bir sayfaya erişim yetkisi olup olmadığını kontrol eder ve eğer yetki yoksa
RedirectToLoginbileşenini gösterir. - Bileşen,
RedirectToLoginyetkisiz kullanıcıları oturum açma sayfasına yönlendirmeyi yönetir.
- CascadingAuthenticationState bileşeni, AuthenticationState uygulamanın geri kalanına ifşa etme işlemini yönetir.
-
AuthorizeRouteView bileşeni, geçerli kullanıcının belirli bir sayfaya erişim yetkisi olup olmadığını kontrol eder ve eğer yetki yoksa
RedirectToLoginbileşenini gösterir. - Bileşen,
RedirectToLoginyetkisiz kullanıcıları oturum açma sayfasına yönlendirmeyi yönetir.
ASP.NET Core sürümleri arasında çerçevedeki değişiklikler nedeniyle, Razor bileşen (App) için App.razor işaretleme bu bölümde gösterilmez. Belirli bir sürüm için bileşenin işaretlemesini incelemek için aşağıdaki yaklaşımlardan birini kullanın:
Kullanmak istediğiniz ASP.NET Core sürümü için varsayılan Blazor WebAssembly proje şablonundan kimlik doğrulaması için sağlanan bir uygulama oluşturun.
AppOluşturulan uygulamadaki bileşeni (App.razor) inceleyin.Başvuru kaynağındaki
AppApp.razorbileşeni () inceleyin. Dal seçiciden sürümü seçin ve bileşeni, yıllar içinde taşındığı için, deponunProjectTemplatesklasöründe arayın.Note
.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).
RedirectToLogin bileşeni
Bileşen RedirectToLogin (RedirectToLogin.razor):
- Yetkisiz kullanıcıları oturum açma sayfasına yönlendirmeyi yönetir.
- Kullanıcının erişmeye çalıştığı mevcut URL, kimlik doğrulaması başarılı olursa kullanıcıyı o sayfaya geri yönlendirebilmek için saklanır.
- .NET 7 veya sonraki sürümlerde ASP.NET Core'da gezinti geçmişi durumu .
- .NET 6 veya önceki sürümlerde ASP.NET Core'da bir sorgu dizesi.
Başvuru kaynağındaki RedirectToLogin bileşeni inceleyin. Bileşenin konumu zaman içinde değiştiğinden, bileşeni bulmak için GitHub arama araçlarını kullanın.
Oturum açma yolu uygulama tarafından özelleştirilebilir (RemoteAuthenticationApplicationPathsOptions.LogInPath, çerçeve varsayılanları (dotnet/aspnetcore başvuru kaynağı)). Proje şablonunun RedirectToLogin bileşeni varsayılan oturum açma yolunu authentication/loginkullanır.
Note
.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).
Bir uygulama oturum açma yolunu özelleştirirse aşağıdaki yaklaşımlardan birini kullanın:
Bileşendeki sabit kodlanmış dizedeki yolu eşleştirin
RedirectToLogin.Yapılandırılan değeri elde etmek için ekleme RemoteAuthenticationOptions . Örneğin, yolunu ile AddApiAuthorizationözelleştirirken bu yaklaşımı kullanın. Bileşenin en üstüne
RedirectToLoginaşağıdaki yönergeleri ekleyin:@using Microsoft.Extensions.Options @inject IOptionsSnapshot<RemoteAuthenticationOptions<ApiAuthorizationProviderOptions>> RemoteOptionsyönteminde bileşenin yeniden yönlendirmesini
OnInitializeddeğiştirin:- Navigation.NavigateToLogin("authentication/login"); + Navigation.NavigateToLogin(RemoteOptions.Get(Options.DefaultName) + .AuthenticationPaths.LogInPath);Note
Diğer yollar proje şablonunun yollarından veya çerçevenin varsayılan yollarından farklıysa, aynı şekilde yönetilmelidir.
LoginDisplay bileşeni
Bileşen LoginDisplay (LoginDisplay.razor) bileşeninde MainLayout işlenir (MainLayout.razor) ve aşağıdaki davranışları yönetir:
- Kimliği doğrulanmış kullanıcılar için:
- Geçerli kullanıcı adını görüntüler.
- ASP.NET Core'da Identitykullanıcı profili sayfasına bir bağlantı sunar.
- Uygulamadan çıkış yapmak için bir düğme sunar.
- Anonim kullanıcılar için:
- Kaydolma seçeneği sunar.
- Oturum açma seçeneği sunar.
ASP.NET Core sürümleri arasında çerçevedeki değişiklikler nedeniyle, Razor bileşen için LoginDisplay işaretleme bu bölümde gösterilmez. Belirli bir sürüm için bileşenin işaretlemesini incelemek için aşağıdaki yaklaşımlardan birini kullanın:
Kullanmak istediğiniz ASP.NET Core sürümü için varsayılan Blazor WebAssembly proje şablonundan kimlik doğrulaması için sağlanan bir uygulama oluşturun.
LoginDisplayOluşturulan uygulamadaki bileşeni inceleyin.Başvuru kaynağındaki
LoginDisplaybileşeni inceleyin. Bileşenin konumu zaman içinde değiştiğinden, bileşeni bulmak için GitHub arama araçlarını kullanın. Şablonlu içerik,Hosteddeğerinintrueeşit olduğu durumlarda kullanılır.Note
.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).
Kimlik doğrulama bileşeni
Bileşen (Authentication) tarafından Pages/Authentication.razor oluşturulan sayfa, farklı kimlik doğrulama aşamalarını işlemek için gereken yolları tanımlar.
Bileşen RemoteAuthenticatorView :
-
Microsoft.AspNetCore.Components.WebAssembly.Authenticationpaketi tarafından sağlanır. - Kimlik doğrulamasının her aşamasında uygun eylemleri gerçekleştirmeyi yönetir.
@page "/authentication/{action}"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
<RemoteAuthenticatorView Action="@Action" />
@code {
[Parameter]
public string? Action { get; set; }
}
Note
Null atanabilir başvuru türleri (NTS) ve .NET derleyici null durum statik çözümlemesi .NET 6 veya sonraki sürümlerde ASP.NET Core'da desteklenir. .NET 6'da ASP.NET Core'un yayımlanmasından önce, string tür null tür ataması (?) olmadan görünür.
Troubleshoot
Logging
Kimlik doğrulaması için hata ayıklama veya izleme günlüğünü etkinleştirmek amacıyla, makale sürümü seçicisini .NET 7 veya sonraki sürümlerde ASP.NET Core olarak ayarlayarak, ASP.NET Core Blazor WebAssembly günlüğününBlazor bölümüne bakın.
Yaygın hatalar
Uygulamanın veya Identity Sağlayıcının (IP) yanlış yapılandırılması
En yaygın hatalar yanlış yapılandırmadan kaynaklanıyor. Aşağıda birkaç örnek verilmiştir:
- Senaryonun gereksinimlerine bağlı olarak, eksik veya yanlış bir Yetkili, Örnek, Kiracı Kimliği, Kiracı etki alanı, İstemci Kimliği veya Yeniden Yönlendirme URI'si bir uygulamanın istemcilerin kimliğini doğrulamasını engeller.
- Yanlış istek kapsamları istemcilerin sunucu web API'leri uç noktalarına erişmesini engeller.
- Hatalı veya eksik sunucu API'si izinleri istemcilerin sunucu web API'si uç noktalarına erişmesini engeller.
- IP uygulaması kaydının Yeniden Yönlendirme URI'sinde yapılandırılan bağlantı noktasından farklı bir bağlantı noktasında uygulamayı çalıştırma. Microsoft Entra Kimliği ve geliştirme testi adresinde çalışan bir
localhostuygulama için bağlantı noktası gerekli değildir, ancak uygulamanın bağlantı noktası yapılandırması ve uygulamanın çalıştırıldığı bağlantı noktası, adres olmayanlarlocalhostiçin eşleşmelidir.
Bu makalenin kılavuzunun yapılandırma bölümlerinde doğru yapılandırma örnekleri gösterilir. Uygulama ve IP yanlış yapılandırması olup olmadığını bulmak için makalenin her bölümünü dikkatle denetleyin.
Yapılandırma doğru görünüyorsa:
Uygulama günlüklerini analiz edin.
tarayıcının geliştirici araçlarıyla istemci uygulaması ile IP veya sunucu uygulaması 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 IP veya sunucu 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)
JSON Web Belirteci'nin Blazor (JWT) kullanıldığı sürümler için, sorunun oluştuğu yere bağlı olarak, istemcinin kimliğini doğrulamak veya sunucu web API'sine erişmek için kullanılan belirtecin içeriğini çözün. Daha fazla bilgi için bkz . JSON Web Belirtecinin (JWT) içeriğini inceleme.
Belge ekibi makalelerdeki belge geri bildirimlerine ve hatalarına yanıt verir (Bu sayfa geri bildirimi bölümünden bir sorun açın) ancak ürün desteği sağlayamaz. 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/aspnetcoreGitHub deposu).ME-ID için yetkisiz istemci
bilgi: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] Yetkilendirme başarısız oldu. Bu gereksinimler karşılanmadı: DenyAnonymousAuthorizationRequirement: Kimliği doğrulanmış bir kullanıcı gerektirir.
ME-ID'den oturum açma geri çağırma hatası:
- Hata:
unauthorized_client - Açıklama:
AADB2C90058: The provided application is not configured to allow public clients.
Hatayı düzeltmek için:
- Azure portalında uygulamanın bildirimine erişin.
- özniteliğini
allowPublicClientveyanullolaraktrueayarlayın.
- Hata:
Çerezler 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, sağlayıcıyla kullanıcı hesabı değişiklikleri veya sağlayıcı uygulaması 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 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
- Microsoft Edge:
-
Argümanlar 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: URL'nin açılacağı yerde
--incognito --new-window {URL}kullanın, burada{URL}yer tutucu (örneğin,https://localhost:5001). - Mozilla Firefox:
-private -url {URL}Yer tutucunun{URL}açıldığı URL olduğu yerde kullanın (örneğin,https://localhost:5001).
- Microsoft Edge'i kullanın
- "Friendly name alanına bir ad sağlayın." Ö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:
- Komut kabuğunda
dotnet nuget locals all --clearkomutunu yürüterek yerel sistemin NuGet paket önbellekleri temizleyin. - Proje
binveobjklasörlerini silin. - Projeyi geri yükleyin ve yeniden oluşturun.
- 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.
Server Uygulamayı çalıştırma
Barındırılan Blazor WebAssemblybir çözümü test ederken ve sorun giderirken uygulamayı projeden çalıştırdığınızdan Server emin olun.
Kullanıcıyı inceleme
Aşağıdaki User bileşen doğrudan uygulamalarda kullanılabilir veya daha fazla özelleştirme için temel olarak kullanılabilir.
User.razor:
@page "/user"
@attribute [Authorize]
@using System.Text.Json
@using System.Security.Claims
@inject IAccessTokenProvider AuthorizationService
<h1>@AuthenticatedUser?.Identity?.Name</h1>
<h2>Claims</h2>
@foreach (var claim in AuthenticatedUser?.Claims ?? Array.Empty<Claim>())
{
<p class="claim">@(claim.Type): @claim.Value</p>
}
<h2>Access token</h2>
<p id="access-token">@AccessToken?.Value</p>
<h2>Access token claims</h2>
@foreach (var claim in GetAccessTokenClaims())
{
<p>@(claim.Key): @claim.Value.ToString()</p>
}
@if (AccessToken != null)
{
<h2>Access token expires</h2>
<p>Current time: <span id="current-time">@DateTimeOffset.Now</span></p>
<p id="access-token-expires">@AccessToken.Expires</p>
<h2>Access token granted scopes (as reported by the API)</h2>
@foreach (var scope in AccessToken.GrantedScopes)
{
<p>Scope: @scope</p>
}
}
@code {
[CascadingParameter]
private Task<AuthenticationState> AuthenticationState { get; set; }
public ClaimsPrincipal AuthenticatedUser { get; set; }
public AccessToken AccessToken { get; set; }
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
var state = await AuthenticationState;
var accessTokenResult = await AuthorizationService.RequestAccessToken();
if (!accessTokenResult.TryGetToken(out var token))
{
throw new InvalidOperationException(
"Failed to provision the access token.");
}
AccessToken = token;
AuthenticatedUser = state.User;
}
protected IDictionary<string, object> GetAccessTokenClaims()
{
if (AccessToken == null)
{
return new Dictionary<string, object>();
}
// header.payload.signature
var payload = AccessToken.Value.Split(".")[1];
var base64Payload = payload.Replace('-', '+').Replace('_', '/')
.PadRight(payload.Length + (4 - payload.Length % 4) % 4, '=');
return JsonSerializer.Deserialize<IDictionary<string, object>>(
Convert.FromBase64String(base64Payload));
}
}
JSON Web Belirtecinin (JWT) içeriğini inceleme
JSON Web Belirtecinin (JWT) kodunu çözmek için Microsoft'un jwt.ms aracını kullanın. Kullanıcı arabirimindeki değerler hiçbir zaman tarayıcınızdan ayrılmaz.
Kodlanmış JWT örneği (görüntü için kısaltıldı):
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1j ... bQdHBHGcQQRbW7Wmo6SWYG4V_bU55Ug_PW4pLPr20tTS8Ct7_uwy9DWrzCMzpD-EiwT5IjXwlGX3IXVjHIlX50IVIydBoPQtadvT7saKo1G5Jmutgq41o-dmz6-yBMKV2_nXA25Q
Azure AAD B2C'de kimlik doğrulaması yapılan bir uygulama için araç tarafından çözümlenen JWT örneği:
{
"typ": "JWT",
"alg": "RS256",
"kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
"exp": 1610059429,
"nbf": 1610055829,
"ver": "1.0",
"iss": "https://mysiteb2c.b2clogin.com/11112222-bbbb-3333-cccc-4444dddd5555/v2.0/",
"sub": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"aud": "00001111-aaaa-2222-bbbb-3333cccc4444",
"nonce": "bbbb0000-cccc-1111-dddd-2222eeee3333",
"iat": 1610055829,
"auth_time": 1610055822,
"idp": "idp.com",
"tfp": "B2C_1_signupsignin"
}.[Signature]
Ek kaynaklar
- ASP.NET Core Blazor WebAssembly ek güvenlik senaryoları
- Authentication.MSAL JavaScript kitaplığının özel bir sürümünü oluşturma
- Güvenli bir varsayılan istemciye sahip bir uygulamada kimliği doğrulanmamış veya yetkisiz web API'si istekleri
- Microsoft Entra ID grupları ve rolleri ile ASP.NET Core Blazor WebAssembly
- Hızlı Başlangıç: Bir uygulamayı Microsoft kimlik platformuna kaydetme
- Hızlı Başlangıç: Web API'lerini kullanıma sunan bir uygulama yapılandırma
ASP.NET Core