Zabezpečení samostatné aplikace ASP.NET Core Blazor WebAssembly pomocí Azure Active Directory B2C
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Tento článek vysvětluje, jak vytvořit samostatnou aplikaci, která k ověřování používá Azure Active Directory (AAD) B2C.Blazor WebAssembly
Další pokrytí scénáře zabezpečení po přečtení tohoto článku najdete v tématu ASP.NET Core Blazor WebAssembly další scénáře zabezpečení.
Názorný postup
Pododdíly návodu vysvětlují, jak:
- Vytvoření tenanta v Azure
- Registrace aplikace v Azure
- Blazor Vytvoření aplikace
- Spustit aplikaci
Vytvoření tenanta v Azure
Postupujte podle pokynů v kurzu: Vytvoření tenanta Azure Active Directory B2C pro vytvoření tenanta AAD B2C.
Než budete pokračovat v pokynech k tomuto článku, ověřte, že jste pro tenanta AAD B2C vybrali správný adresář.
Registrace aplikace v Azure
Registrace aplikace AAD B2C:
- Na webu Azure Portal přejděte do Azure AD B2C . Na bočním panelu vyberte Registrace aplikací. Vyberte tlačítko Nová registrace.
- Zadejte název aplikace (například Blazor samostatná AAD B2C).
- U podporovaných typů účtů vyberte možnost s více tenanty: Účty v libovolném adresáři organizace nebo v libovolném zprostředkovateli identity. Ověřování uživatelů pomocí Azure AD B2C
- Nastavte rozevírací seznam identifikátoru URI přesměrování na jednostránkové aplikace (SPA) a zadejte následující identifikátor URI přesměrování:
https://localhost/authentication/login-callback
. Pokud znáte identifikátor URI přesměrování produkčního prostředí pro výchozího hostitele Azure (napříkladazurewebsites.net
) nebo vlastního hostitele domény (napříkladcontoso.com
), můžete také přidat identifikátor URI přesměrování produkčního prostředí současně s identifikátoremlocalhost
URI přesměrování. Nezapomeňte do všech identifikátorů URI pro přesměrování v produkčním prostředí, které přidáte, zahrnout číslo portu pro jiné:443
porty. - Pokud používáte neověřenou doménu vydavatele, ověřte, že> je vybrána oprávnění udělit správci souhlas s openid a offline_access oprávnění. Pokud je doména vydavatele ověřená, toto políčko není k dispozici.
- Vyberte Zaregistrovat.
Poznámka:
Zadání čísla portu pro localhost
identifikátor URI přesměrování AAD B2C není povinné. Další informace najdete v tématu Omezení a omezení identifikátoru URI přesměrování (adresa URL odpovědi): Výjimky localhost (dokumentace k Entra).
Poznamenejte si následující informace:
- ID aplikace (klienta) (například
41451fa7-82d9-4673-8fa5-69eff5a761fd
). - Instance AAD B2C (například
https://contoso.b2clogin.com/
, která zahrnuje koncové lomítko): Instance je schéma a hostitel registrace aplikace Azure B2C, kterou najdete otevřením okna Koncové body na stránce Registrace aplikací na webu Azure Portal. - AAD B2C Primary/Publisher/Tenant domain (například
contoso.onmicrosoft.com
): Doména je k dispozici jako doména vydavatele v okně Branding webu Azure Portal pro zaregistrovanou aplikaci.
V konfiguraci>ověřovací>platformy jednostrákovou aplikaci:
- Ověřte, že je k dispozici identifikátor URI
https://localhost/authentication/login-callback
přesměrování. - V části Implicitní udělení se ujistěte, že nejsou zaškrtnutá políčka pro přístupové tokeny a tokeny ID. Implicitní udělení se nedoporučuje pro Blazor aplikace používající MSAL verze 2.0 nebo novější. Další informace najdete v tématu Zabezpečení ASP.NET Core Blazor WebAssembly.
- Zbývající výchozí hodnoty pro aplikaci jsou pro toto prostředí přijatelné.
- Pokud jste provedli změny, vyberte tlačítko Uložit.
V Home>tocích uživatelů Azure AD B2C>:
Vytvoření toku uživatele registrace a přihlášení
Minimálně vyberte atribut uživatele zobrazovaného jména deklarací identity>aplikace, který naplní context.User.Identity?.Name
context.User.Identity.Name
/součást LoginDisplay
(Shared/LoginDisplay.razor
).
Poznamenejte si přihlašovací a přihlašovací název toku vytvořený pro aplikaci (například B2C_1_signupsignin
).
Blazor Vytvoření aplikace
V prázdné složce nahraďte zástupné symboly v následujícím příkazu informacemi zaznamenanými dříve a spusťte příkaz v příkazovém prostředí:
dotnet new blazorwasm -au IndividualB2C --aad-b2c-instance "{AAD B2C INSTANCE}" --client-id "{CLIENT ID}" --domain "{TENANT DOMAIN}" -o {PROJECT NAME} -ssp "{SIGN UP OR SIGN IN POLICY}"
Zástupný symbol | Název webu Azure Portal | Příklad |
---|---|---|
{AAD B2C INSTANCE} |
Instance | https://contoso.b2clogin.com/ (včetně koncového lomítka) |
{PROJECT NAME} |
— | BlazorSample |
{CLIENT ID} |
ID aplikace (klienta) | 41451fa7-82d9-4673-8fa5-69eff5a761fd |
{SIGN UP OR SIGN IN POLICY} |
Tok registrace/přihlášení uživatele | B2C_1_signupsignin1 |
{TENANT DOMAIN} |
Primární/ vydavatel/ doména tenanta | contoso.onmicrosoft.com |
Výstupní umístění zadané pomocí -o|--output
možnosti vytvoří složku projektu, pokud neexistuje, a stane se součástí názvu projektu.
Přidejte dvojici MsalProviderOptions for a openid
offline_access
DefaultAccessTokenScopes:
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.DefaultAccessTokenScopes.Add("openid");
options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
});
Po vytvoření aplikace byste měli být schopni:
- Přihlaste se k aplikaci pomocí uživatelského účtu Microsoft Entra ID.
- Vyžádání přístupových tokenů pro rozhraní API Microsoftu Další informace najdete tady: .
Spustit aplikaci
Ke spuštění aplikace použijte jeden z následujících přístupů:
- Visual Studio
- Vyberte tlačítko Run (Spustit).
- V nabídce použijte ladění spustit ladění.>
- Stiskněte klávesu F5.
- Příkazové prostředí .NET CLI: Spusťte
dotnet run
příkaz ze složky aplikace.
Části aplikace
Tato část popisuje části aplikace vygenerované ze Blazor WebAssembly šablony projektu a způsob konfigurace aplikace. Pokud jste aplikaci vytvořili pomocí pokynů v části Návod , není v této části potřeba postupovat podle konkrétních pokynů. Pokyny v této části jsou užitečné pro aktualizaci aplikace pro ověřování a autorizaci uživatelů. Alternativním přístupem k aktualizaci aplikace je ale vytvoření nové aplikace z pokynů v části Návod a přesun komponent, tříd a prostředků aplikace do nové aplikace.
Ověřovací balíček
Když je aplikace vytvořená tak, aby používala individuální účet B2C (IndividualB2C
), aplikace automaticky obdrží odkaz na balíček pro knihovnu Microsoft Authentication Library (Microsoft.Authentication.WebAssembly.Msal
). Balíček poskytuje sadu primitiv, které aplikaci pomáhají ověřovat uživatele a získávat tokeny pro volání chráněných rozhraní API.
Pokud do aplikace přidáváte ověřování, přidejte balíček Microsoft.Authentication.WebAssembly.Msal
do aplikace ručně.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Balíček Microsoft.Authentication.WebAssembly.Msal
tranzitivně přidá Microsoft.AspNetCore.Components.WebAssembly.Authentication
do aplikace.
Podpora ověřovací služby
Podpora ověřování uživatelů je zaregistrovaná v kontejneru služby pomocí AddMsalAuthentication metody rozšíření poskytované balíčkem Microsoft.Authentication.WebAssembly.Msal
. Tato metoda nastaví všechny služby, které aplikace potřebuje pro interakci s poskytovatelem Identity (IP).
V souboru Program
:
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication);
});
Metoda AddMsalAuthentication přijímá zpětné volání ke konfiguraci parametrů potřebných k ověření aplikace. Hodnoty vyžadované pro konfiguraci aplikace se dají získat z konfigurace při registraci aplikace.
Konfigurace je poskytována souborem wwwroot/appsettings.json
:
{
"AzureAdB2C": {
"Authority": "{AAD B2C INSTANCE}{TENANT DOMAIN}/{SIGN UP OR SIGN IN POLICY}",
"ClientId": "{CLIENT ID}",
"ValidateAuthority": false
}
}
V předchozí konfiguraci {AAD B2C INSTANCE}
obsahuje koncové lomítko.
Příklad:
{
"AzureAdB2C": {
"Authority": "https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1_signupsignin1",
"ClientId": "41451fa7-82d9-4673-8fa5-69eff5a761fd",
"ValidateAuthority": false
}
}
Obory přístupového tokenu
Šablona Blazor WebAssembly automaticky nenakonfiguruje aplikaci tak, aby požadovala přístupový token pro zabezpečené rozhraní API. Pokud chcete zřídit přístupový token jako součást toku přihlašování, přidejte obor do výchozích oborů přístupového tokenu MsalProviderOptionsv :
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.DefaultAccessTokenScopes.Add("{SCOPE URI}");
});
Zadejte další obory pomocí AdditionalScopesToConsent
:
options.ProviderOptions.AdditionalScopesToConsent.Add("{ADDITIONAL SCOPE URI}");
Poznámka:
AdditionalScopesToConsent Není možné zřídit delegovaná uživatelská oprávnění pro Microsoft Graph prostřednictvím uživatelského rozhraní souhlasu s ID Microsoft Entra, když uživatel poprvé používá aplikaci zaregistrovanou v Microsoft Azure. Další informace najdete v tématu Použití rozhraní Graph API s ASP.NET Core Blazor WebAssembly.
Další informace najdete v následujících částech článku Další scénáře :
Režim přihlášení
Ve výchozím nastavení rozhraní se automaticky otevíraný režim přihlášení vrátí do režimu přesměrování, pokud se automaticky otevírané okno nedá otevřít. Nakonfigurujte MSAL tak, aby používal režim přesměrování přihlášení nastavením LoginMode
vlastnosti MsalProviderOptions na redirect
:
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.LoginMode = "redirect";
});
Výchozí nastavení je popup
a hodnota řetězce nerozlišuje malá a velká písmena.
Import souboru
Obor Microsoft.AspNetCore.Components.Authorization názvů je dostupný v celé aplikaci prostřednictvím _Imports.razor
souboru:
@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
Indexová stránka
Stránka Index (wwwroot/index.html
) obsahuje skript, který definuje v JavaScriptu AuthenticationService
. AuthenticationService
zpracovává podrobnosti nízké úrovně protokolu OIDC. Aplikace interně volá metody definované ve skriptu k provádění ověřovacích operací.
<script src="_content/Microsoft.Authentication.WebAssembly.Msal/AuthenticationService.js"></script>
Komponenta aplikace
Komponenta App
(App.razor
) se podobá komponentě App
nalezené v Blazor Server aplikacích:
- Komponenta AuthorizeRouteView zajišťuje, že aktuální uživatel má oprávnění pro přístup k dané stránce nebo že komponentu
RedirectToLogin
jinak vykresluje. - Komponenta
RedirectToLogin
spravuje přesměrování neoprávněných uživatelů na přihlašovací stránku.
- Komponenta CascadingAuthenticationState spravuje vystavení AuthenticationState zbytku aplikace.
- Komponenta AuthorizeRouteView zajišťuje, že aktuální uživatel má oprávnění pro přístup k dané stránce nebo že komponentu
RedirectToLogin
jinak vykresluje. - Komponenta
RedirectToLogin
spravuje přesměrování neoprávněných uživatelů na přihlašovací stránku.
Vzhledem ke změnám v rozhraní napříč verzemi ASP.NET Core Razor se v této části nezobrazují značky komponenty App
(App.razor
). Pokud chcete zkontrolovat kód komponenty pro danou verzi, použijte některý z následujících přístupů:
Vytvořte aplikaci zřízenou pro ověřování z výchozí Blazor WebAssembly šablony projektu pro verzi ASP.NET Core, kterou chcete použít. Zkontrolujte komponentu
App
(App.razor
) ve vygenerované aplikaci.Zkontrolujte komponentu (
App.razor
) v referenčnímApp
zdroji. Vyberte verzi ze selektoru větve a vyhledejte komponentu veProjectTemplates
složce úložiště, protože se v průběhu let přesunula.Poznámka:
Odkazy na dokumentaci k referenčnímu zdroji .NET obvykle načítají výchozí větev úložiště, která představuje aktuální vývoj pro příští verzi .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepnutí větví nebo značek. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Komponenta RedirectToLogin
Komponenta RedirectToLogin
(RedirectToLogin.razor
):
- Spravuje přesměrování neoprávněných uživatelů na přihlašovací stránku.
- Aktuální adresa URL, ke které se uživatel pokouší získat přístup, je udržována tak, aby se v případě úspěšného ověření vrátila na tuto stránku:
- Stav historie navigace v ASP.NET Core v .NET 7 nebo novějším
- Řetězec dotazu v ASP.NET Core v .NET 6 nebo starší.
Zkontrolujte komponentu v referenčním RedirectToLogin
zdroji. Umístění komponenty se v průběhu času změnilo, proto k vyhledání komponenty použijte vyhledávací nástroje GitHubu.
Poznámka:
Odkazy na dokumentaci k referenčnímu zdroji .NET obvykle načítají výchozí větev úložiště, která představuje aktuální vývoj pro příští verzi .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepnutí větví nebo značek. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Komponenta LoginDisplay
Komponenta LoginDisplay
(LoginDisplay.razor
) se vykreslí MainLayout
v komponentě (MainLayout.razor
) a spravuje následující chování:
- Pro ověřené uživatele:
- Zobrazí aktuální uživatelské jméno.
- Nabízí odkaz na stránku profilu uživatele v ASP.NET Core Identity.
- Nabízí tlačítko pro odhlášení z aplikace.
- Anonymní uživatelé:
- Nabízí možnost registrace.
- Nabízí možnost přihlášení.
Vzhledem ke změnám v rozhraní napříč verzemi ASP.NET Core Razor se v této části nezobrazují značky komponenty LoginDisplay
. Pokud chcete zkontrolovat kód komponenty pro danou verzi, použijte některý z následujících přístupů:
Vytvořte aplikaci zřízenou pro ověřování z výchozí Blazor WebAssembly šablony projektu pro verzi ASP.NET Core, kterou chcete použít. Zkontrolujte komponentu
LoginDisplay
ve vygenerované aplikaci.Zkontrolujte komponentu v referenčním
LoginDisplay
zdroji. Umístění komponenty se v průběhu času změnilo, proto k vyhledání komponenty použijte vyhledávací nástroje GitHubu. Použije se šablonovaný obsah,Hosted
kterýtrue
se rovná.Poznámka:
Odkazy na dokumentaci k referenčnímu zdroji .NET obvykle načítají výchozí větev úložiště, která představuje aktuální vývoj pro příští verzi .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepnutí větví nebo značek. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Komponenta ověřování
Stránka vytvořená komponentou Authentication
(Pages/Authentication.razor
) definuje trasy potřebné pro zpracování různých fází ověřování.
Komponenta RemoteAuthenticatorView :
- Balíček je poskytován
Microsoft.AspNetCore.Components.WebAssembly.Authentication
. - Spravuje provádění příslušných akcí v každé fázi ověřování.
@page "/authentication/{action}"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
<RemoteAuthenticatorView Action="Action" />
@code {
[Parameter]
public string? Action { get; set; }
}
Poznámka:
Statické analýzy stavu null s možnou hodnotou null (NRT) a kompilátoru .NET se podporují v ASP.NET Core v .NET 6 nebo novějším. Před vydáním ASP.NET Core v .NET 6 string
se typ zobrazí bez označení typu null (?
).
Vlastní zásady
Microsoft Authentication Library (Microsoft.Authentication.WebAssembly.Msalbalíček NuGet) ve výchozím nastavení nepodporuje vlastní zásady AAD B2C.
Odstraňování potíží
Protokolování
Pokud chcete povolit protokolování ladění nebo trasování pro Blazor WebAssembly ověřování, přečtěte si část Protokolování ověřování na straně klienta protokolování ASP.NET Core Blazor pomocí selektoru verze článku nastaveného na ASP.NET Core 7.0 nebo novější.
Běžné chyby
Chybná konfigurace aplikace nebo Identity poskytovatele (IP)
Nejčastější chyby jsou způsobené nesprávnou konfigurací. Tady je několik příkladů:
- V závislosti na požadavcích scénáře brání chybějící nebo nesprávné autoritě, instanci, ID tenanta, doméně tenanta, ID klienta nebo identifikátoru URI přesměrování, aby aplikace ověřoval klienty.
- Nesprávné obory požadavků brání klientům v přístupu ke koncovým bodům webového rozhraní API serveru.
- Nesprávná nebo chybějící oprávnění rozhraní API serveru brání klientům v přístupu ke koncovým bodům webového rozhraní API serveru.
- Spuštění aplikace na jiném portu, než je nakonfigurované v identifikátoru URI přesměrování registrace aplikace IP adresy. Všimněte si, že port není nutný pro MICROSOFT Entra ID a aplikaci spuštěnou
localhost
na adrese pro testování vývoje, ale konfigurace portu aplikace a port, na kterém je aplikace spuštěná, se musí shodovat s neadresoulocalhost
.
V oddílech konfigurace pokynů v tomto článku najdete příklady správné konfigurace. Pečlivě zkontrolujte každou část článku, ve které hledáte chybnou konfiguraci aplikace a IP adresy.
Pokud se konfigurace zobrazí správně:
Analyzujte protokoly aplikace.
Prozkoumejte síťový provoz mezi klientskou aplikací a IP nebo serverovou aplikací pomocí vývojářských nástrojů prohlížeče. Často je přesná chybová zpráva nebo zpráva s povědomím o příčině problému vrácena klientovi ip adresou nebo serverovou aplikací po provedení požadavku. Vývojářské nástroje pokyny najdete v následujících článcích:
- Google Chrome (dokumentace Google)
- Microsoft Edge
- Mozilla Firefox (dokumentace k Mozilla)
U verzí Blazor , ve JSkterých se používá on Web Token (JWT), dekódujte obsah tokenu, který se používá k ověřování klienta nebo přístupu k webovému rozhraní API serveru, v závislosti na tom, kde k problému dochází. Další informace naleznete v tématu Kontrola obsahu JSON Web Token (JWT).
Tým dokumentace reaguje na zpětnou vazbu a chyby v článcích (otevřete problém z oddílu Pro zpětnou vazbu na této stránce ), ale nemůže poskytnout podporu k produktům. K dispozici je několik veřejných fór podpory, která vám pomůžou s řešením potíží s aplikací. Doporučujeme následující:
Předchozí fóra nejsou vlastněna ani řízena Společností Microsoft.
V případě zpráv o chybách rozhraní bez zabezpečení, nerozlišujících a nedůvěryhodných reprodukovatelných chyb otevřete problém s produktovou jednotkou ASP.NET Core. Neotevírejte problém s produktovou jednotkou, dokud důkladně neprošetříte příčinu problému a nemůžete ho vyřešit sami a s pomocí komunity na veřejném fóru podpory. Produktová jednotka nedokáže řešit potíže s jednotlivými aplikacemi, které jsou poškozené kvůli jednoduché chybné konfiguraci nebo případům použití zahrnujícím služby třetích stran. Pokud je sestava citlivá nebo důvěrná v povaze nebo popisuje potenciální chybu zabezpečení v produktu, který by útočníci mohli zneužít, přečtěte si téma Hlášení problémů se zabezpečením a chyb (
dotnet/aspnetcore
úložiště GitHub).</a0> Neautorizovaný klient pro ME-ID
info: Autorizace Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] selhala. Tyto požadavky nebyly splněny: DenyAnonymousAuthorizationRequirement: Vyžaduje ověřeného uživatele.
Chyba zpětného volání přihlášení z ME-ID:
- Chyba:
unauthorized_client
- Popis:
AADB2C90058: The provided application is not configured to allow public clients.
Řešení chyby:
- Na webu Azure Portal přejděte k manifestu aplikace.
allowPublicClient
Nastavte atribut nanull
nebotrue
.
- Chyba:
Cookies a data lokality
Cookiedata s a webu můžou přetrvat v aktualizacích aplikací a kolidovat s testováním a odstraňováním potíží. Při provádění změn kódu aplikace, změn uživatelského účtu u poskytovatele nebo změn konfigurace aplikace poskytovatele zrušte následující:
- Přihlášení cookieuživatele
- Aplikace cookie
- Uložená a uložená data lokality v mezipaměti
Jedním z přístupů, jak zabránit tomu, aby se při testování a řešení potíží zabránilo přetrvávání cookiedat lokality, je:
- Konfigurace prohlížeče
- K testování můžete použít prohlížeč, který můžete nakonfigurovat tak, aby při každém zavření prohlížeče odstranil všechna cookie data a data webu.
- Ujistěte se, že je prohlížeč zavřený ručně nebo integrované vývojové prostředí (IDE) pro všechny změny aplikace, testovacího uživatele nebo konfigurace poskytovatele.
- Pomocí vlastního příkazu otevřete prohlížeč v režimu InPrivate nebo Incognito v sadě Visual Studio:
- V dialogovém okně Spustit v sadě Visual Studio otevřete dialogové okno Procházet.
- Vyberte tlačítko Přidat.
- Do pole Program zadejte cestu k prohlížeči. Následující spustitelné cesty jsou typická umístění instalace pro Windows 10. Pokud je váš prohlížeč nainstalovaný v jiném umístění nebo nepoužíváte Windows 10, zadejte cestu ke spustitelnému souboru prohlížeče.
- 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:
- V poli Argumenty zadejte možnost příkazového řádku, kterou prohlížeč používá k otevření v režimu InPrivate nebo Anonymní režim. Některé prohlížeče vyžadují adresu URL aplikace.
- Microsoft Edge: Použijte
-inprivate
. - Google Chrome: Použijte
--incognito --new-window {URL}
, kde zástupný symbol{URL}
je adresa URL k otevření (napříkladhttps://localhost:5001
). - Mozilla Firefox: Použijte
-private -url {URL}
, kde zástupný symbol{URL}
je adresa URL k otevření (napříkladhttps://localhost:5001
).
- Microsoft Edge: Použijte
- Do pole Popisný název zadejte název. Například
Firefox Auth Testing
. - Vyberte tlačítko OK.
- Pokud se chcete vyhnout výběru profilu prohlížeče pro každou iteraci testování pomocí aplikace, nastavte profil jako výchozí tlačítkem Nastavit jako výchozí .
- Ujistěte se, že integrované vývojové prostředí (IDE) zavřel prohlížeč pro všechny změny aplikace, testovacího uživatele nebo konfigurace poskytovatele.
Upgrady aplikací
Funkční aplikace může selhat okamžitě po upgradu sady .NET Core SDK na vývojovém počítači nebo změně verzí balíčků v aplikaci. V některých případech můžou inkoherentní balíčky přerušit aplikaci při provádění hlavních upgradů. Většinu těchto problémů je možné vyřešit pomocí těchto pokynů:
- Vymažte mezipaměti balíčků NuGet místního systému spuštěním
dotnet nuget locals all --clear
z příkazového prostředí. - Odstraňte složky a
obj
složky projektubin
. - Obnovte a znovu sestavte projekt.
- Před opětovným nasazením aplikace odstraňte všechny soubory ve složce nasazení na serveru.
Poznámka:
Použití verzí balíčků nekompatibilních s cílovou architekturou aplikace se nepodporuje. Informace o balíčku potřebujete pomocí galerie NuGet nebo Průzkumníka balíčků FuGet.
Server
Spuštění aplikace
Při testování a řešení potíží s hostovaným Blazor WebAssemblyřešením se ujistěte, že aplikaci spouštíte z Server
projektu.
Kontrola uživatele
Následující User
komponentu lze použít přímo v aplikacích nebo sloužit jako základ pro další přizpůsobení.
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));
}
}
Kontrola obsahu webového tokenu JSON (JWT)
K dekódování webového tokenu JS(JWT) použijte nástroj microsoftu jwt.ms . Hodnoty v uživatelském rozhraní nikdy neopustí prohlížeč.
Příklad kódovaného JWT (zkrácený pro zobrazení):
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1j ... bQdHBHGcQQRbW7Wmo6SWYG4V_bU55Ug_PW4pLPr20tTS8Ct7_uwy9DWrzCMzpD-EiwT5IjXwlGX3IXVjHIlX50IVIydBoPQtadvT7saKo1G5Jmutgq41o-dmz6-yBMKV2_nXA25Q
Příklad dekódování JWT nástrojem pro aplikaci, která se ověřuje v Azure AAD B2C:
{
"typ": "JWT",
"alg": "RS256",
"kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
"exp": 1610059429,
"nbf": 1610055829,
"ver": "1.0",
"iss": "https://mysiteb2c.b2clogin.com/5cc15ea8-a296-4aa3-97e4-226dcc9ad298/v2.0/",
"sub": "5ee963fb-24d6-4d72-a1b6-889c6e2c7438",
"aud": "70bde375-fce3-4b82-984a-b247d823a03f",
"nonce": "b2641f54-8dc4-42ca-97ea-7f12ff4af871",
"iat": 1610055829,
"auth_time": 1610055822,
"idp": "idp.com",
"tfp": "B2C_1_signupsignin"
}.[Signature]
Další materiály
- Další scénáře zabezpečení ASP.NET Core Blazor WebAssembly
- Sestavení vlastní verze knihovny Authentication.MSAL JavaScript
- Neověřené nebo neoprávněné požadavky webového rozhraní API v aplikaci se zabezpečeným výchozím klientem
- Cloudové ověřování pomocí Azure Active Directory B2C v ASP.NET Core
- Kurz: Vytvoření tenanta Azure Active Directory B2C
- Kurz: Registrace aplikace v Azure Active Directory B2C
- Dokumentace k platformě Microsoft Identity Platform
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro