Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Note
Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.
Warning
A ASP.NET Core ezen verziója már nem támogatott. További információ: .NET és .NET Core támogatási szabályzat. Az aktuális kiadást lásd ennek a cikknek a .NET 9-es verziójában .
Ez a cikk bemutatja, hogyan hozhat létre egy különálló Blazor WebAssembly alkalmazást, amely Microsoft-fiókokat használ a Microsoft Entra (ME-ID) segítségével a hitelesítéshez.
A cikk elolvasása után további biztonsági forgatókönyvekkel kapcsolatban lásd ASP.NET Core Blazor WebAssembly további biztonsági forgatókönyveket.
Walkthrough
Az útmutató alszakaszai az alábbiakat ismertetik:
- Bérlő létrehozása az Azure-ban
- Alkalmazás regisztrálása az Azure-ban
- Az Blazor alkalmazás létrehozása
- Az alkalmazás futtatása
Bérlő létrehozása az Azure-ban
Kövesse a Gyorsútmutató: Bérlő beállítása útmutatásait egy bérlő létrehozásához az ME-ID-ben.
Alkalmazás regisztrálása az Azure-ban
ME-ID-alkalmazás regisztrálása:
- Lépjen a(z) Microsoft Entra ID az Azure-portálon. Az oldalsávon válassza ki az alkalmazásregisztrációk lehetőséget. Válassza az Új regisztrációs gombot.
- Adjon meg egy nevet az alkalmazáshoz (például KülönállóBlazor MS-fiókok ME-ID).
- A Támogatott fióktípusokrészben válassza a Bármely szervezeti könyvtár fiókjai (Bármely Microsoft Entra ID könyvtár – Több-bérlős)lehetőséget.
- Állítsa be az Átirányítási URI legördülő menüt az Egyoldalas alkalmazás (SPA) opción, és adja meg a következő átirányítási URI-t:
https://localhost/authentication/login-callback. Ha ismeri az Azure alapértelmezett gazdagép éles átirányítási URI-ját (példáulazurewebsites.net) vagy az egyéni domain gazdagép (példáulcontoso.com), az éles átirányítási URI-t hozzá lehet adni azlocalhostátirányítási URI-val egyidejűleg. A hozzáadott, nem:443portokat használó produkciós átirányítási URI-k esetében mindenképpen adja meg a portszámot. - Ha nem ellenőrzött közzétevői tartománythasznál, törölje a kijelölést az Engedélyek ,>opcióban, amely a rendszergazdai hozzájárulás megadását kéri az openid és az offline_access engedélyekhez, a jelölőnégyzetből. Ha a közzétevő domainja ellenőrzött, ez a jelölőnégyzet nem jelenik meg.
- Válassza a Regisztrálás lehetőséget.
Note
Nem szükséges megadni egy localhost ME-ID átirányítási URI portszámát. További információ: Átirányítási URI (válasz URL-cím) korlátozásai: Localhost-kivételek (Entra-dokumentáció).
Jegyezze fel az alkalmazás (ügyfél) azonosítóját (például 00001111-aaaa-2222-bbbb-3333cccc4444).
Hitelesítési>platformkonfigurációk>egyoldalas alkalmazás:
- Ellenőrizze, hogy a
https://localhost/authentication/login-callbackátirányítási URI-ja jelen van-e. - Az Implicit engedélyezési szakaszban győződjön meg arról, hogy a hozzáférési tokenek és a azonosító tokenek jelölőnégyzete nincs bejelölve. Az implicit engedélyezés nem ajánlott az MSAL 2.0-s vagy újabb verzióját használó Blazor alkalmazásokhoz. További információ: Secure ASP.NET Core Blazor WebAssembly.
- Az alkalmazás többi alapértelmezett értéke elfogadható ehhez az élményhez.
- Ha módosításokat végzett, válassza a Mentés gombot.
Az Blazor alkalmazás létrehozása
Hozza létre az alkalmazást. Cserélje le a következő parancs helyőrzőit a korábban rögzített adatokra, majd hajtsa végre azt egy parancshéjban.
dotnet new blazorwasm -au SingleOrg --client-id "{CLIENT ID}" --tenant-id "common" -o {PROJECT NAME}
| Placeholder | Az Azure Portal neve | Example |
|---|---|---|
{PROJECT NAME} |
— | BlazorSample |
{CLIENT ID} |
Alkalmazás (ügyfél) azonosítója | 00001111-aaaa-2222-bbbb-3333cccc4444 |
A -o|--output beállítással megadott kimeneti hely létrehoz egy projektmappát, ha az nem létezik, és a projekt nevének részévé válik.
Adjon hozzá egy pár MsalProviderOptions a openid és offline_accessDefaultAccessTokenScopesszámára:
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.DefaultAccessTokenScopes.Add("openid");
options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
});
Az alkalmazás futtatása
Az alkalmazás futtatásához használja az alábbi módszerek egyikét:
- Visual Studio
- Nyomja meg a Futtatás gombot.
- Használja a hibakeresés >A hibakeresés indítása opciót a menüben.
- Nyomja le az F5 billentyűt.
- .NET CLI parancshéj: Hajtsa végre a
dotnet watch(vagydotnet run) parancsot az alkalmazás mappájából.
Az alkalmazás részei
Ez a szakasz az alkalmazás Blazor WebAssembly projektsablonból létrehozott részeit és az alkalmazás konfigurálásának módját ismerteti. Ebben a szakaszban nem talál konkrét útmutatást egy alapszintű munkaalkalmazáshoz, ha az alkalmazást az útmutató szakaszban található útmutatással hozta létre. Az ebben a szakaszban található útmutató segítséget nyújt egy alkalmazás frissítéséhez a felhasználók hitelesítéséhez és engedélyezéséhez. Az alkalmazások frissítésének alternatív módszere azonban az, ha az útmutató szakasz útmutatásából új alkalmazást hoz létre, és áthelyezi az alkalmazás összetevőit, osztályait és erőforrásait az új alkalmazásba.
Hitelesítési csomag
Ha egy alkalmazás munkahelyi vagy iskolai fiókok (SingleOrg) használatára jön létre, az alkalmazás automatikusan megkapja a Microsoft Authentication Library (Microsoft.Authentication.WebAssembly.Msal) csomaghivatkozását. A csomag primitívek készletét biztosítja, amelyek segítenek az alkalmazásnak hitelesíteni a felhasználókat, és jogkivonatokat szerezni a védett API-k meghívásához.
Ha hitelesítést ad hozzá egy alkalmazáshoz, manuálisan adja hozzá a Microsoft.Authentication.WebAssembly.Msal csomagot az alkalmazáshoz.
Note
A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.
A Microsoft.Authentication.WebAssembly.Msal csomag tranzitív módon hozzáadja a Microsoft.AspNetCore.Components.WebAssembly.Authentication csomagot az alkalmazáshoz.
Hitelesítési szolgáltatás támogatása
A felhasználók hitelesítésének támogatása a szolgáltatástárolóban a AddMsalAuthentication csomag által biztosított Microsoft.Authentication.WebAssembly.Msal bővítménymetódussal van regisztrálva. Ez a módszer beállítja az alkalmazásnak a Identity szolgáltatóval (IP-címmel) való interakcióhoz szükséges összes szolgáltatást.
A Program fájlban:
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
});
A AddMsalAuthentication metódus egy visszahívást fogad el az alkalmazás hitelesítéséhez szükséges paraméterek konfigurálásához. Az alkalmazás konfigurálásához szükséges értékek az alkalmazás regisztrálásakor ME-ID konfigurációból kérhetők le.
wwwroot/appsettings.json konfigurációja
A konfigurációt a wwwroot/appsettings.json fájl adja meg:
{
"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
}
}
Hozzáférési jogkivonat hatókörei
A Blazor WebAssembly-sablon nem konfigurálja automatikusan az alkalmazást hozzáférési jogkivonat lekérésére egy biztonságos API-hoz. Ha hozzáférési jogkivonatot szeretne kiépíteni a bejelentkezési folyamat részeként, adja hozzá a hatókört a MsalProviderOptionsalapértelmezett hozzáférési jogkivonat-hatóköreihez:
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.DefaultAccessTokenScopes.Add("{SCOPE URI}");
});
Adjon meg további hatóköröket a AdditionalScopesToConsentértékhez:
options.ProviderOptions.AdditionalScopesToConsent.Add("{ADDITIONAL SCOPE URI}");
Note
AdditionalScopesToConsent Microsoft Graphhoz a Microsoft Entra ID hozzájárulási felhasználói felületén keresztül, amikor egy felhasználó először a Microsoft Azure-ban regisztrált alkalmazást használ. További információkért tekintse meg: A Graph API használata ASP.NET Core Blazor WebAssembly.
További információt a További forgatókönyvek című cikk alábbi szakaszaiban talál:
- További hozzáférési jogkivonatok kérése
- Tokent csatoljon a kimenő kérelmekhez
- rövid útmutató: Alkalmazás konfigurálása webes API-k közzétételéhez
Bejelentkezési mód
A keretrendszer alapértelmezés szerint előugró bejelentkezési módra vált, és visszavált az átirányítási bejelentkezési módra, ha egy előugró ablak nem nyitható meg. Az MSAL úgy konfigurálható, hogy átirányítási bejelentkezési módot használjon, ha a LoginModeMsalProviderOptions tulajdonságát a redirectértékre állítjuk be.
builder.Services.AddMsalAuthentication(options =>
{
...
options.ProviderOptions.LoginMode = "redirect";
});
Az alapértelmezett beállítás popup, és a string értéke nem érzékeny a kis- és nagybetűkre.
Fájl importálása
A Microsoft.AspNetCore.Components.Authorization névtér az alkalmazás teljes területén elérhetővé válik a _Imports.razor fájlon keresztül:
...
@using Microsoft.AspNetCore.Components.Authorization
...
Indexlap
Az Indexlap (wwwroot/index.html) oldal tartalmaz egy szkriptet, amely meghatározza a JavaScriptben található AuthenticationService.
AuthenticationService kezeli az OIDC protokoll alacsony szintű részleteit. Az alkalmazás belsőleg meghívja a szkriptben meghatározott metódusokat a hitelesítési műveletek végrehajtásához.
<script src="_content/Microsoft.Authentication.WebAssembly.Msal/AuthenticationService.js"></script>
Alkalmazásösszetevő
A App összetevő (App.razor) hasonló az App alkalmazásokban található Blazor Server összetevőhöz:
- A AuthorizeRouteView összetevő gondoskodik arról, hogy az aktuális felhasználó hozzáférhessen egy adott laphoz, vagy más módon renderelje a
RedirectToLoginösszetevőt. - A
RedirectToLoginösszetevő kezeli a jogosulatlan felhasználók bejelentkezési lapra való átirányítását.
- A CascadingAuthenticationState összetevő biztosítja, hogy a AuthenticationState látható legyen az alkalmazás többi részének.
- A AuthorizeRouteView összetevő gondoskodik arról, hogy az aktuális felhasználó hozzáférhessen egy adott laphoz, vagy más módon renderelje a
RedirectToLoginösszetevőt. - A
RedirectToLoginösszetevő kezeli a jogosulatlan felhasználók bejelentkezési lapra való átirányítását.
Az ASP.NET Core kiadásaiban történt változások miatt a Razor összetevő (App) App.razor jelölése nem jelenik meg ebben a szakaszban. Az összetevő egy adott kiadásra vonatkozó jelölésének vizsgálatához használja a következő módszerek valamelyikét: vagy.
Hozzon létre egy hitelesítéshez kiépített alkalmazást a használni kívánt ASP.NET Core alapértelmezett Blazor WebAssembly projektsablonjából. Vizsgálja meg a
Appösszetevőt (App.razor) a létrehozott alkalmazásban.Vizsgálja meg a
Appösszetevőt (App.razor) a referencia forrásban. Válassza ki a verziót az ágválasztóból, és keresse meg az összetevőt az adattárProjectTemplatesmappájában, mert az az évek során áthelyeződött.Note
A .NET referenciaforrásra mutató dokumentációs hivatkozások általában betöltik az adattár alapértelmezett ágát, amely a .NET következő kiadásának aktuális fejlesztését jelöli. Egy adott kiadás címkéjének kiválasztásához használja az Ágak vagy címkék váltása legördülő listát. További információ: A ASP.NET Core-forráskód (dotnet/AspNetCore.Docs #26205) verziócímkéjének kiválasztása.
RedirectToLogin összetevő
A RedirectToLogin összetevő (RedirectToLogin.razor):
- Kezeli a jogosulatlan felhasználók bejelentkezési lapra való átirányítását.
- A felhasználó által elérni kívánt aktuális URL-címet a rendszer úgy tartja karban, hogy vissza lehessen adni őket az adott oldalra, ha a hitelesítés sikeres:
- navigációs előzmények állapota az ASP.NET Core rendszerben a .NET 7 vagy újabb verziók esetén.
- A lekérdezési sztring az ASP.NET Core-ban .NET 6 vagy korábbi verziókban.
Vizsgálja meg az RedirectToLogin összetevőt a referenciaforrásban. Az összetevő helye idővel megváltozott, ezért a GitHub keresőeszközei segítségével keresse meg az összetevőt.
A bejelentkezési útvonalat az alkalmazás testre szabhatja (RemoteAuthenticationApplicationPathsOptions.LogInPatha keretrendszer alapértelmezései (dotnet/aspnetcorereferenciaforrás)). A projektsablon RedirectToLogin összetevője az alapértelmezett bejelentkezési útvonalat authentication/loginhasználja.
Note
A .NET referenciaforrásra mutató dokumentációs hivatkozások általában betöltik az adattár alapértelmezett ágát, amely a .NET következő kiadásának aktuális fejlesztését jelöli. Egy adott kiadás címkéjének kiválasztásához használja az Ágak vagy címkék váltása legördülő listát. További információ: A ASP.NET Core-forráskód (dotnet/AspNetCore.Docs #26205) verziócímkéjének kiválasztása.
Ha egy alkalmazás testre szabja a bejelentkezési útvonalat, kövesse az alábbi módszerek egyikét:
Egyezzen az összetevőben lévő, rögzített sztring elérési útjára
RedirectToLogin.Injektáljuk RemoteAuthenticationOptions a konfigurált érték beolvasásához. Ezt a megközelítést például akkor érdemes alkalmazni, ha az elérési utat a következővel AddApiAuthorizationszabja testre: Adja hozzá a következő irányelveket az
RedirectToLoginösszetevő tetején:@using Microsoft.Extensions.Options @inject IOptionsSnapshot<RemoteAuthenticationOptions<ApiAuthorizationProviderOptions>> RemoteOptionsMódosítsa az összetevő átirányítását a
OnInitializedmetódusban:- Navigation.NavigateToLogin("authentication/login"); + Navigation.NavigateToLogin(RemoteOptions.Get(Options.DefaultName) + .AuthenticationPaths.LogInPath);Note
Ha más útvonalak eltérnek a projektsablon vagy a keretrendszer alapértelmezett elérési útjaitól, azokat ugyanúgy kell kezelni.
LoginDisplay összetevő
A LoginDisplay összetevő (LoginDisplay.razor) a MainLayout összetevőben (MainLayout.razor) jelenik meg, és a következő viselkedéseket kezeli:
- Hitelesített felhasználók esetén:
- Megjeleníti az aktuális felhasználónevet.
- A ASP.NET Core Identityfelhasználói profillapjára mutató hivatkozást kínál.
- Egy gombot kínál az alkalmazásból való kijelentkezéshez.
- Névtelen felhasználók számára:
- Lehetőséget kínál a regisztrációra.
- Lehetőséget kínál a bejelentkezésre.
A keretrendszerben a ASP.NET Core kiadásaiban bekövetkezett változások miatt ebben a szakaszban nem jelenik meg az Razor összetevőre vonatkozó LoginDisplay korrektúra. Az összetevő egy adott kiadásra vonatkozó jelölésének vizsgálatához használja a következő módszerek valamelyikét: vagy.
Hozzon létre egy hitelesítéshez kiépített alkalmazást a használni kívánt ASP.NET Core alapértelmezett Blazor WebAssembly projektsablonjából. Vizsgálja meg a létrehozott alkalmazás
LoginDisplayösszetevőjét.Vizsgálja meg az
LoginDisplayösszetevőt a referenciaforrásban. Az összetevő helye idővel megváltozott, ezért a GitHub keresőeszközei segítségével keresse meg az összetevőt. AHostedegyenlőtruesablonalapú tartalmát használja.Note
A .NET referenciaforrásra mutató dokumentációs hivatkozások általában betöltik az adattár alapértelmezett ágát, amely a .NET következő kiadásának aktuális fejlesztését jelöli. Egy adott kiadás címkéjének kiválasztásához használja az Ágak vagy címkék váltása legördülő listát. További információ: A ASP.NET Core-forráskód (dotnet/AspNetCore.Docs #26205) verziócímkéjének kiválasztása.
Hitelesítési összetevő
A Authentication összetevő (Pages/Authentication.razor) által létrehozott oldal határozza meg a különböző hitelesítési szakaszok kezeléséhez szükséges útvonalakat.
A RemoteAuthenticatorView összetevő:
- A
Microsoft.AspNetCore.Components.WebAssembly.Authenticationcsomag biztosítja. - Kezeli a megfelelő műveletek végrehajtását a hitelesítés minden szakaszában.
@page "/authentication/{action}"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
<RemoteAuthenticatorView Action="@Action" />
@code {
[Parameter]
public string? Action { get; set; }
}
Note
Az ASP.NET Core-ban a NULL értékű referenciatípusok (NRT-k) és a .NET fordító statikus nullállapot-elemzése a .NET 6-os vagy újabb verziókban támogatott. A .NET 6-ban a ASP.NET Core kiadása előtt a string típus null típusú megjelölés (?) nélkül jelenik meg.
Troubleshoot
Logging
Ha engedélyezni szeretné a hibakeresést vagy a nyomkövetési naplózást a hitelesítéshezBlazor WebAssembly, tekintse meg a Blazor szakaszát, amelyben a cikk verzióválasztója ASP.NET Core a .NET 7-es vagy újabb verziójában.
Gyakori hibák
Az alkalmazás vagy Identity szolgáltató (IP) helytelen konfigurálása
A leggyakoribb hibákat a helytelen konfiguráció okozza. Az alábbiakban néhány példát láthat:
- A forgatókönyv követelményeitől függően egy hiányzó vagy helytelen szolgáltató, példány, bérlőazonosító, bérlői tartomány, ügyfélazonosító vagy átirányítási URI megakadályozza, hogy egy alkalmazás hitelesítse az ügyfeleket.
- A helytelen kérelemtartományok megakadályozzák, hogy az ügyfelek hozzáférjenek a kiszolgáló webes API-végpontjaihoz.
- Helytelen vagy hiányzó kiszolgálói API-engedélyek megakadályozzák, hogy az ügyfelek hozzáférjenek a kiszolgáló webes API-végpontjaihoz.
- Az alkalmazást egy másik porton futtatják, mint ami az IP cím alkalmazásregisztrációjának átirányítási URI-jában van beállítva. Vegye figyelembe, hogy a Microsoft Entra-azonosítóhoz és egy
localhostfejlesztési tesztelési címen futó alkalmazáshoz nincs szükség portra, de az alkalmazás portkonfigurációjának és a portnak, amelyen az alkalmazás fut, meg kell egyeznie a nemlocalhostcímekhez.
A cikk útmutatójának konfigurációs szakaszai példákat mutatnak a helyes konfigurációra. Gondosan ellenőrizze a cikk egyes szakaszait, hogy az alkalmazás és az IP-cím helytelenül van-e konfigurálva.
Ha a konfiguráció helyesnek tűnik:
Alkalmazásnaplók elemzése.
Vizsgálja meg az ügyfélalkalmazás és az IP- vagy kiszolgálóalkalmazás közötti hálózati forgalmat a böngésző fejlesztői eszközeivel. Gyakran a kliens egy pontos hibaüzenetet vagy egy olyan üzenetet kap vissza, amely utal arra, mi okozza a problémát, miután a kérést elküldi az IP-cím vagy a kiszolgáló alkalmazás. A fejlesztői eszközökkel kapcsolatos útmutatást a következő cikkekben találja:
- Google Chrome (Google-dokumentáció)
- Microsoft Edge
- Mozilla Firefox (Mozilla-dokumentáció)
Azokon a Blazor kiadásokon, ahol JSON webjogkivonatot (JWT) használnak, dekódolja az ügyfél hitelesítéséhez vagy egy kiszolgáló webes API-hoz való hozzáféréshez használt jogkivonat tartalmát, attól függően, hogy hol jelentkezik a probléma. További információ: JSON-webjogkivonat (JWT) tartalmának vizsgálata.
A dokumentációs csapat válaszol a cikkekben szereplő dokumentumokkal kapcsolatos visszajelzésekre és hibákra (nyisson meg egy hibát a Ezen az oldalon visszajelzési szakaszból), de nem tud terméktámogatást nyújtani. Számos nyilvános támogatási fórum áll rendelkezésre az alkalmazások hibaelhárításához. A következőket javasoljuk:
Az előző fórumok nem a Microsoft tulajdonában vagy ellenőrzése alatt állnak.
A nem biztonsági vonatkozású, nem érzékeny és nem bizalmas, reprodukálható keretrendszer hibajelentései esetén nyisson meg egy hibajelentést az ASP.NET Core termékegységnél. Ne nyisson meg egy problémát a termékegységben, amíg nem vizsgálja meg alaposan a probléma okát, és nem tudja önállóan és a közösség segítségével megoldani a problémát egy nyilvános támogatási fórumon. A termékegység nem tudja elhárítani a külső szolgáltatásokat érintő egyszerű helytelen konfiguráció vagy használati esetek miatt hibásan működő egyes alkalmazásokat. Ha egy jelentés bizalmas jellegű, vagy a kiberbűnözők által kihasználható termék biztonsági hibáját írja le, tekintse meg Biztonsági problémák és hibák jelentésével (
dotnet/aspnetcoreGitHub-adattár).Jogosulatlan ügyfél ME-ID
info: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] Az engedélyezés nem sikerült. Ezek a követelmények nem teljesültek: DenyAnonymousAuthorizationRequirement: Hitelesített felhasználót igényel.
Bejelentkezési visszahívási hiba a ME-ID-ből:
- Hiba:
unauthorized_client - Leírás:
AADB2C90058: The provided application is not configured to allow public clients.
A hiba megoldása:
- Az Azure Portalon érheti el a alkalmazás jegyzékfájlját.
- Állítsa a
allowPublicClientattribútumotnullvagytrueértékre.
- Hiba:
Cookie-k és webhelyadatok
A cookie-k és a webhelyadatok az alkalmazásfrissítések során is megmaradhatnak, és zavarhatják a tesztelést és a hibaelhárítást. Törölje az alábbiakat az alkalmazáskód módosításakor, a felhasználói fiók szolgáltatónál történő módosításakor vagy a szolgáltatói alkalmazás konfigurációjának módosításakor:
- Felhasználói bejelentkezési cookie-k
- Alkalmazás cookie-k
- Gyorsítótárazott és tárolt webhelyadatok
Az elhúzódó cookie-k és webhelyadatok tesztelésbe és hibaelhárításba való beavatkozásának megakadályozására az egyik megközelítés a következő:
- Böngésző konfigurálása
- Használjon egy böngészőt a teszteléshez, amely konfigurálható az összes cookie és webhelyadatok törlésére minden alkalommal, amikor a böngésző bezárul.
- Győződjön meg arról, hogy a böngésző manuálisan vagy az IDE által bezárva van az alkalmazás, a tesztfelhasználó vagy a szolgáltató konfigurációjának bármilyen módosításához.
- Egyéni paranccsal nyisson meg egy böngészőt InPrivate vagy Inkognitó módban a Visual Studióban:
- Nyissa meg a Tallózás párbeszédpanelt a Visual Studio Futtatás gombjával.
- Válassza a Hozzáadás gombot.
- Adja meg a böngésző elérési útját a Program mezőben. A következő végrehajtható elérési utak a Windows 10 tipikus telepítési helyei. Ha a böngésző más helyen van telepítve, vagy nem Windows 10-et használ, adja meg a böngésző végrehajtható fájljának elérési útját.
- 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:
- Az Argumentumok mezőben adja meg azt a parancssori beállítást, amelyet a böngésző inPrivate vagy Inkognitó módban való megnyitáshoz használ. Egyes böngészőkben az alkalmazás URL-címe szükséges.
- Microsoft Edge: A
-inprivatehasználata. - Google Chrome: Használja a
--incognito --new-window {URL}, ahol a{URL}helyőrző a megnyitni kívánt URL-cím (példáulhttps://localhost:5001). - Mozilla Firefox: Használja a
-private -url {URL}, ahol a{URL}helyőrző a megnyitni kívánt URL-cím (példáulhttps://localhost:5001).
- Microsoft Edge: A
- Adjon meg egy nevet a Barátságos név mezőben. Például
Firefox Auth Testing. - Válassza az OK gombot.
- Ha el szeretné kerülni, hogy az alkalmazással végzett tesztelés minden iterációja esetében ki kell választania a böngészőprofilt, állítsa be a profilt alapértelmezettként az Alapértelmezett gombbal.
- Győződjön meg arról, hogy az IDE bezárja a böngészőt az alkalmazás, a tesztfelhasználó vagy a szolgáltató konfigurációjának bármilyen módosításához.
Alkalmazásfrissítések
A működő alkalmazások a .NET SDK fejlesztői gépen való frissítése vagy az alkalmazás csomagverzióinak módosítása után azonnal meghiúsulhatnak. Bizonyos esetekben az inkognitó csomagok megszakíthatják az alkalmazásokat a nagyobb frissítések végrehajtásakor. A legtöbb ilyen probléma az alábbi utasítások követésével javítható:
- Tisztítsa meg a helyi rendszer NuGet csomaggyorsítótárait a
dotnet nuget locals all --clearparancs végrehajtásával egy parancshéjban. - Törölje a projekt
binésobjmappáit. - Állítsa vissza és építse újra a projektet.
- Az alkalmazás ismételt üzembe helyezése előtt törölje a kiszolgáló üzembehelyezési mappájában lévő összes fájlt.
Note
Az alkalmazás cél-keretrendszerével nem kompatibilis csomagverziók használata nem támogatott. A csomaggal kapcsolatos információkért használja a NuGet Galériát.
Az Server alkalmazás futtatása
Egy üzemeltetett Blazor WebAssemblymegoldástesztelése és hibaelhárítása során győződjön meg arról, hogy az alkalmazást a Server projektből futtatja.
A felhasználó vizsgálata
A következő User összetevő közvetlenül az alkalmazásokban használható, vagy a további testreszabás alapjául szolgál.
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-webjogkivonat (JWT) tartalmának vizsgálata
JSON-webjogkivonat (JWT) dekódolásához használja a Microsoft jwt.ms eszközét. A felhasználói felületen lévő értékek soha nem hagyják el a böngészőt.
Példa kódolt JWT -ra (a megjelenítéshez rövidítve):
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1j ... bQdHBHGcQQRbW7Wmo6SWYG4V_bU55Ug_PW4pLPr20tTS8Ct7_uwy9DWrzCMzpD-EiwT5IjXwlGX3IXVjHIlX50IVIydBoPQtadvT7saKo1G5Jmutgq41o-dmz6-yBMKV2_nXA25Q
Az eszköz által dekódolt JWT-példa egy Azure AAD B2C-vel hitelesítő alkalmazáshoz:
{
"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]
További erőforrások
- ASP.NET Core Blazor WebAssembly további biztonsági forgatókönyvek
- Authentication.MSAL JavaScript-kódtár egyéni verziójának létrehozása
- Nem hitelesített vagy jogosulatlan webes API-kérések egy biztonságos alapértelmezett ügyféllel rendelkező alkalmazásban,
- ASP.NET Core Blazor WebAssembly Microsoft Entra ID csoportokkal és szerepkörökkel
- rövid útmutató: Alkalmazás regisztrálása a Microsoft identitásplatformon
- rövid útmutató: Alkalmazás konfigurálása webes API-k közzétételéhez