Kimlik Doğrulama kitaplığı ile ASP.NET Core Blazor WebAssembly tek başına uygulamasının güvenliğini sağlama
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, Kimlik Doğrulama kitaplığıyla ASP.NET Core Blazor WebAssembly tek başına uygulamasının güvenliğini sağlama açıklanmaktadır Blazor WebAssembly .
Blazor WebAssembly Kimlik Doğrulama kitaplığı (Authentication.js
) yalnızca Microsoft Kimlik Doğrulama Kitaplığı (MSAL, msal.js
) aracılığıyla Kod Değişimi (PKCE) yetkilendirme kodu akışı için Proof Key'i destekler. Diğer verme akışlarını uygulamak için MSAL kılavuzuna erişerek MSAL'yi doğrudan uygulayın, ancak uygulamalar için Blazor PKCE dışındaki izin akışlarının kullanılmasını desteklemiyor veya önermiyoruz.
Microsoft Entra (ME-ID) ve Azure Active Directory B2C (AAD B2C) kılavuzu için bu konudaki yönergeleri izlemeyin. Bkz. Microsoft Entra ID ile ASP.NET Core Blazor WebAssembly tek başına uygulamasının güvenliğini sağlama veya Azure Active Directory B2C ile ASP.NET Core Blazor WebAssembly tek başına uygulamasının güvenliğini sağlama.
Bu makaleyi okuduktan sonra ek güvenlik senaryosu kapsamı için bkz . ASP.NET Çekirdek Blazor WebAssembly ek güvenlik senaryoları.
İzlenecek yol
İzlenecek kılavuzun alt bölümlerinde aşağıdakilerin nasıl yapılacağı açıklanmaktadır:
- Bir uygulamayı kaydetme
- Blazor Uygulamayı oluşturma
- Uygulamayı çalıştırma
Bir uygulamayı kaydetme
IP'nin bakımcısı tarafından sağlanan yönergeleri izleyerek bir uygulamayı OpenID Connect (OIDC)Identity Sağlayıcısına (IP) kaydedin.
Aşağıdaki bilgileri kaydedin:
- Yetkili (örneğin,
https://accounts.google.com/
). - Uygulama (istemci) kimliği (örneğin,
2...7-e...q.apps.googleusercontent.com
). - Ek IP yapılandırması (IP'nin belgelerine bakın).
Not
IP OIDC kullanmalıdır. Örneğin, Facebook'un IP'si OIDC uyumlu bir sağlayıcı olmadığından bu konudaki yönergeler Facebook IP'siyle çalışmaz. Daha fazla bilgi için bkz . Secure ASP.NET Core Blazor WebAssembly.
Blazor Uygulamayı oluşturma
Kitaplığı kullanan Microsoft.AspNetCore.Components.WebAssembly.Authentication
tek başına Blazor WebAssembly bir uygulama oluşturmak için, seçtiğiniz araçlarla ilgili yönergeleri izleyin. Kimlik doğrulaması için destek ekliyorsanız, uygulamayı ayarlama ve yapılandırma yönergeleri için bu makalenin Uygulama Bölümleri bölümüne bakın.
Kimlik doğrulama mekanizmasıyla yeni Blazor WebAssembly bir proje oluşturmak için:
Uygulama şablonunu seçtikten Blazor WebAssembly sonra Kimlik doğrulama türünü Tek Tek Hesaplar olarak ayarlayın.
Uygulama şablonunu seçtikten Blazor WebAssembly sonra Kimlik doğrulama türünü Tek Tek Hesaplar olarak ayarlayın. ASP.NET Temel Barındırılan onay kutusunun seçili olmadığını onaylayın.
Tek Tek Hesaplar seçimi, ASP.NET Core'un Identity sistemini kullanır. Bu seçim kimlik doğrulama desteği ekler ve kullanıcıların bir veritabanında depolanmasına neden olmaz. Bu makalenin aşağıdaki bölümlerinde daha fazla ayrıntı sağlanır.
Uygulamayı yapılandırma
UYGULAMAYı IP'nin yönergelerini izleyerek yapılandırın. En azından uygulama, uygulamanın dosyasında ve Local:Authority
Local:ClientId
yapılandırma ayarlarını wwwroot/appsettings.json
gerektirir:
{
"Local": {
"Authority": "{AUTHORITY}",
"ClientId": "{CLIENT ID}"
}
}
5001 numaralı bağlantı noktasındaki adreste localhost
çalışan bir uygulama için Google OAuth 2.0 OIDC örneği:
{
"Local": {
"Authority": "https://accounts.google.com/",
"ClientId": "2...7-e...q.apps.googleusercontent.com",
"PostLogoutRedirectUri": "https://localhost:5001/authentication/logout-callback",
"RedirectUri": "https://localhost:5001/authentication/login-callback",
"ResponseType": "code"
}
}
Yeniden yönlendirme URI'si (https://localhost:5001/authentication/login-callback
), Google API'leri konsolunda Kimlik Bilgileri Yetkili yeniden yönlendirme URI'leri>{NAME}
> bölümünde kayıtlıdır; burada{NAME}
, Google API'leri konsolunun OAuth 2.0 İstemci Kimlikleri uygulama listesinde uygulamanın istemci adıdır.
Not
OAuth 2.0 belirtimi başına bazı OIDC IP'leri için yeniden yönlendirme URI'sinin bağlantı noktası numarasını localhost
sağlamak gerekli değildir. Bazı IP'ler geri döngü adreslerinin bağlantı noktasını atlarken yeniden yönlendirme URI'sine izin verir. Diğerleri, bağlantı noktası numarası için joker karakter kullanılmasına izin verir (örneğin, *
). Ek bilgi için IP'nin belgelerine bakın.
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ıklamaYı>Başlat Hata Ayıklamayı 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
Tek Tek Kullanıcı Hesaplarını kullanmak üzere bir uygulama oluşturulduğunda, uygulama otomatik olarak paket için Microsoft.AspNetCore.Components.WebAssembly.Authentication
bir paket başvurusu 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.AspNetCore.Components.WebAssembly.Authentication
.
Not
.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.
Kimlik doğrulama hizmeti desteği
OpenID Connect (OIDC) kullanarak kullanıcıların kimliğini doğrulama desteği, hizmet kapsayıcısında paket tarafından Microsoft.AspNetCore.Components.WebAssembly.Authentication
sağlanan uzantı yöntemiyle AddOidcAuthentication kaydedilir.
yöntemi, AddOidcAuthentication OIDC kullanarak 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 OIDC uyumlu IP'den alınabilir. Uygulamayı kaydederken genellikle çevrimiçi portalında gerçekleşen değerleri alın.
Yeni bir uygulama için aşağıdaki yapılandırmada {AUTHORITY}
ve {CLIENT ID}
yer tutucuları için değerler sağlayın. Uygulamanın IP'siyle kullanmak için gereken diğer yapılandırma değerlerini sağlayın. Örnek, , RedirectUri
ve ResponseType
gerektiren PostLogoutRedirectUri
Google içindir. Uygulamaya kimlik doğrulaması ekliyorsanız, aşağıdaki kodu ve yapılandırmayı yer tutucular ve diğer yapılandırma değerleriyle birlikte uygulamaya el ile ekleyin.
Program
dosyasında:
builder.Services.AddOidcAuthentication(options =>
{
builder.Configuration.Bind("Local", options.ProviderOptions);
});
wwwroot/appsettings.json
yapılandırması
Yapılandırma dosyası tarafından wwwroot/appsettings.json
sağlanır:
{
"Local": {
"Authority": "{AUTHORITY}",
"ClientId": "{CLIENT ID}"
}
}
Erişim belirteci kapsamları
Şablon ve Blazor WebAssembly profile
için openid
varsayılan kapsamları otomatik olarak yapılandırıyor.
Ş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 belirteci sağlamak için, kapsamını varsayılan belirteç kapsamlarına OidcProviderOptionsekleyin. Uygulamaya kimlik doğrulaması ekliyorsanız, aşağıdaki kodu el ile ekleyin ve kapsam URI'sini yapılandırın.
Program
dosyasında:
builder.Services.AddOidcAuthentication(options =>
{
...
options.ProviderOptions.DefaultScopes.Add("{SCOPE URI}");
});
Daha fazla bilgi için Ek senaryolar makalesinin aşağıdaki bölümlerine bakın:
Dosyayı içeri aktarır
Ad Microsoft.AspNetCore.Components.Authorization alanı, uygulama genelinde şu dosya aracılığıyla _Imports.razor
kullanılabilir hale getirilir:
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using {APPLICATION ASSEMBLY}
@using {APPLICATION ASSEMBLY}.Shared
Dizin sayfası
Dizin sayfası (wwwroot/index.html
) sayfası, JavaScript'te öğesini AuthenticationService
tanımlayan bir betik 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.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>
Uygulama bileşeni
Bileşen App
(App.razor
), uygulamalarda bulunan Blazor Server bileşene App
benzer:
- Bileşen, AuthorizeRouteView geçerli kullanıcının belirli bir sayfaya erişme yetkisine sahip olduğundan veya bileşeni başka bir şekilde işlendiğinden
RedirectToLogin
emin olur. - Bileşen,
RedirectToLogin
yetkisiz kullanıcıları oturum açma sayfasına yönlendirmeyi yönetir.
- Bileşen, CascadingAuthenticationState uygulamasının öğesinin ortaya çıkartılmasıyla rest yönetirAuthenticationState.
- Bileşen, AuthorizeRouteView geçerli kullanıcının belirli bir sayfaya erişme yetkisine sahip olduğundan veya bileşeni başka bir şekilde işlendiğinden
RedirectToLogin
emin olur. - Bileşen,
RedirectToLogin
yetkisiz 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.razor
) için App
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.
App
Oluşturulan uygulamadaki bileşeni (App.razor
) inceleyin.Başvuru kaynağındaki
App
bileşeni (App.razor
) inceleyin. Dal seçiciden sürümü seçin ve yıllar içinde taşındığından deponun klasöründe bileşeniProjectTemplates
arayı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).
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ığı geçerli URL tarafından korunur, böylece kimlik doğrulaması başarılı olursa bu sayfaya döndürülebilir:
- .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.
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).
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.
- Uygulamanın oturumunu kapatmaya ilişkin 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.
LoginDisplay
Oluşturulan uygulamadaki bileşeni inceleyin.Başvuru kaynağındaki
LoginDisplay
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. eşittirtrue
içinHosted
şablonlu içerik kullanılır.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).
Kimlik doğrulama bileşeni
Bileşen (Pages/Authentication.razor
) tarafından Authentication
oluşturulan sayfa, farklı kimlik doğrulama aşamalarını işlemek için gereken yolları tanımlar.
Bileşen RemoteAuthenticatorView :
- Paket tarafından
Microsoft.AspNetCore.Components.WebAssembly.Authentication
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; }
}
Not
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.
Sorun giderme
Günlük Kaydı
Kimlik doğrulaması için hata ayıklama veya izleme günlüğünü etkinleştirmek içinBlazor WebAssembly, makale sürümü seçicisinin ASP.NET Core 7.0 veya üzeri olarak ayarlandığı ASP.NET Core Blazor günlüğünün İstemci tarafı kimlik doğrulama günlüğü bölümüne bakın.
Sık karşılaşılan 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.
- Uygulamayı IP'nin uygulama kaydının Yeniden Yönlendirme URI'sinde yapılandırılandan farklı bir bağlantı noktasında çalıştırma. Microsoft Entra Kimliği ve geliştirme testi adresinde çalışan bir
localhost
uygulama 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 olmayanlarlocalhost
iç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ğinin kodunu kaldırı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/aspnetcore
GitHub 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
allowPublicClient
veyatrue
olaraknull
ayarlayın.
- Hata:
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, 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:
- Bağımsız Değişkenler alanında, tarayıcının InPrivate veya Gizli modda açmak için kullandığı komut satırı seçeneğini belirtin. Bazı tarayıcılar uygulamanın URL'sini gerektirir.
- Microsoft Edge: kullanın
-inprivate
. - Google Chrome: Yer
--incognito --new-window {URL}
tutucunun{URL}
açıldığı URL olduğu yerde kullanın (ö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: kullanın
- 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 Core 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ğundan yürüterek
dotnet nuget locals all --clear
yerel sistemin NuGet paket önbelleklerini temizleyin. - Proje
bin
veobj
klasö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.
Not
Uygulamanın hedef çerçevesiyle uyumlu olmayan paket sürümlerinin kullanımı desteklenmez. Paket hakkında bilgi için NuGet Galerisi'ni veya FuGet Paket Gezgini'ni kullanı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ülen örnek JWT:
{
"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ı
- Güvenli bir varsayılan istemciye sahip bir uygulamada kimliği doğrulanmamış veya yetkisiz web API'si istekleri
- 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