Beveilig ASP.NET Core Blazor WebAssembly
Notitie
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Belangrijk
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikelvoor de huidige release.
Blazor WebAssembly apps worden op dezelfde manier beveiligd als toepassingen met één pagina (SPA's). Er zijn verschillende benaderingen voor het verifiëren van gebruikers voor SPA's, maar de meest voorkomende en uitgebreide benadering is het gebruik van een implementatie op basis van het OAuth 2.0-protocol, zoals OpenID Connect (OIDC).
De Blazor WebAssembly beveiligingsdocumentatie is voornamelijk gericht op het uitvoeren van gebruikersverificatie- en autorisatietaken. Zie voor de algemene concepten van OAuth 2.0/OIDC de resources in de hoofdoverzichtsartikel, sectie Aanvullende resources.
Beveiliging van gevoelige gegevens en inloggegevens aan de klantzijde/SPAs
De .NET/C#-codebasis van een Blazor WebAssembly-app wordt aan clients aangeboden en de code van de app kan niet worden beveiligd tegen inspectie en manipulatie door gebruikers. Plaats nooit gevoelige gegevens in een Blazor WebAssembly-app, zoals app-geheimen, verbindingsreeksen, wachtwoorden, beveiligingssleutels en persoonlijke .NET/C#-code.
De volgende technologieën zijn handig voor het opslaan van gevoelige gegevens, die samen in dezelfde app kunnen worden gebruikt om verantwoordelijkheden op te splitsen voor het opslaan van gegevens tussen ontwikkel- en faserings-/productieomgevingen:
- Secret Manager-hulpprogramma: alleen gebruikt in het lokale ontwikkelsysteem.
- Azure Key Vault-: kan worden gebruikt voor lokaal uitgevoerde apps in de ontwikkelomgeving en voor faserings-/productie-implementaties.
Zie accountbevestiging en wachtwoordherstel in ASP.NET Core Blazor WebAssembly met ASP.NET Core Identityvoor voorbeelden van de voorgaande benaderingen.
Web-API-aanvragen
Als u .NET/C#-code en -gegevens wilt beveiligen, gebruikt u ASP.NET Core Data Protection--functies met een ASP.NET Core-back-endweb-API. De Blazor WebAssembly-app aan de clientzijde roept de web-API aan de serverzijde aan voor beveiligde app-functies en gegevensverwerking. Zie Een web-API aanroepen vanuit een ASP.NET Core Blazor-app en de artikelen en voorbeelden in dit documentatieknooppunt voor meer informatie.
Blazor WebAssembly apps worden vaak verhinderd om directe oproepen te maken tussen origins naar web-API’s vanwege de CORS-beveiliging (Cross-Origin Request Sharing). Een typische uitzondering ziet er als volgt uit:
Toegang tot ophalen op {URL} van oorsprong 'https://localhost:{PORT}' is geblokkeerd door CORS-beleid: er is geen header Access-Control-Allow-Origin aanwezig op de aangevraagde resource. Als een ondoorzichtig antwoord aan uw behoeften voldoet, stelt u de modus van de aanvraag in op 'no-cors' om de resource op te halen waarvoor CORS is uitgeschakeld.
Zelfs als u SetBrowserRequestMode aanroept met een BrowserRequestMode veld van NoCors
(1) om de voorgaande uitzondering te omzeilen, mislukt de aanvraag meestal vanwege CORS-beperkingen op de oorsprong van de web-API, zoals een beperking die alleen aanroepen van specifieke oorsprongen toestaat of een beperking die JavaScript fetch
aanvragen van een browser verhindert. De enige manier waarop dergelijke aanroepen kunnen slagen, is dat de web-API die u aanroept het toestaat dat uw oorsprong zijn oorsprong mag aanroepen met de juiste CORS-configuratie. Met de meeste externe web-API's kunt u hun CORS-beleid niet configureren. Als u deze beperking wilt aanpakken, moet u een van de volgende strategieën toepassen:
Onderhoud uw eigen ASP.NET Core-back-endweb-API aan de serverzijde. De Blazor WebAssembly-app aan de clientzijde roept uw web-API aan op de server en uw web-API doet de aanvraag vanuit de servergebaseerde C#-code (niet een browser) naar de externe web-API met de juiste CORS-headers, waardoor het resultaat wordt geretourneerd naar de Blazor WebAssembly-app aan de clientzijde.
Gebruik een proxyserver om het verzoek van de clientzijde van de Blazor WebAssembly app naar de externe web-API te proxyen. De proxyservice maakt gebruik van een app aan de serverzijde om de aanvraag namens de client in te dienen en retourneert het resultaat nadat de aanroep is geslaagd. In het volgende voorbeeld op basis van CORS PROXY-van CloudFlare is de tijdelijke aanduiding
{REQUEST URI}
de aanvraag-URI:@using System.Net @inject IHttpClientFactory ClientFactory ... @code { public async Task CallApi() { var client = ClientFactory.CreateClient(); var urlEncodedRequestUri = WebUtility.UrlEncode("{REQUEST URI}"); var request = new HttpRequestMessage(HttpMethod.Get, $"https://corsproxy.io/?{urlEncodedRequestUri}"); var response = await client.SendAsync(request); ... } }
Authenticatiebibliotheek
Blazor WebAssembly ondersteunt het verifiëren en autoriseren van apps met behulp van OIDC via de Microsoft.AspNetCore.Components.WebAssembly.Authentication
-bibliotheek met behulp van het Microsoft Identity Platform. De bibliotheek biedt een set primitieven voor naadloze authenticatie bij ASP.NET Core-back-end. De bibliotheek kan authenticeren tegen elke externe Identity Provider (IP) die OIDC ondersteunt, en die OpenID-providers (OP) worden genoemd.
De verificatieondersteuning in de Blazor WebAssembly Library (Authentication.js
) is gebouwd boven op de Microsoft Authentication Library (MSAL, msal.js
), die wordt gebruikt om de details van het onderliggende verificatieprotocol af te handelen. De Blazor WebAssembly-bibliotheek ondersteunt alleen de autorisatiecodestroom voor Proof Key for Code Exchange (PKCE). Impliciete toekenning wordt niet ondersteund.
Er bestaan andere opties voor het verifiëren van SPA's, zoals het gebruik van SameSite-cookies. Het technische ontwerp van Blazor WebAssembly maakt echter gebruik van OAuth en OIDC als de beste optie voor verificatie in Blazor WebAssembly apps. verificatie op basis van tokens op basis van JSON-webtokens (JWT's) is gekozen voor cookieverificatie om functionele en beveiligingsredenen:
- Het gebruik van een protocol op basis van tokens biedt minder beveiligingsproblemen, omdat de tokens niet in alle aanvragen worden verzonden.
- De tokens worden expliciet naar de server verzonden, zodat servereindpunten geen bescherming vereisen tegen CSRF-(Cross-Site Request Forgery). Hiermee kunt u Blazor WebAssembly apps hosten naast MVC- of Razor pagina-apps.
- Tokens hebben beperktere machtigingen dan cookies. Tokens kunnen bijvoorbeeld niet worden gebruikt om het gebruikersaccount te beheren of het wachtwoord van een gebruiker te wijzigen, tenzij dergelijke functionaliteit expliciet wordt geïmplementeerd.
- Tokens hebben een korte levensduur, één uur, waardoor het aanvalsvenster wordt beperkt. Tokens kunnen ook op elk gewenst moment worden ingetrokken.
- Zelfstandige JWT's bieden garanties voor de client en server over het verificatieproces. Een client heeft bijvoorbeeld de middelen om te detecteren en te valideren dat de tokens die worden ontvangen legitiem zijn en zijn verzonden als onderdeel van een bepaald verificatieproces. Als een derde partij een token midden in het verificatieproces probeert te wijzigen, kan de client het overgeschakelde token detecteren en voorkomen dat het wordt gebruikt.
- Tokens met OAuth en OIDC zijn niet afhankelijk van de gebruikersagent die correct werkt om ervoor te zorgen dat de app veilig is.
- Op tokens gebaseerde protocollen, zoals OAuth en OIDC, maken het mogelijk om gebruikers in zelfstandige Blazor Webassembly-apps te verifiëren en autoriseren met dezelfde set beveiligingskenmerken.
- Het gebruik van een protocol op basis van tokens biedt minder beveiligingsproblemen, omdat de tokens niet in alle aanvragen worden verzonden.
- De tokens worden expliciet naar de server verzonden, zodat servereindpunten geen bescherming vereisen tegen CSRF-(Cross-Site Request Forgery). Hiermee kunt u Blazor WebAssembly-apps hosten naast MVC-apps of apps voor Razor-pagina's.
- Tokens hebben beperktere machtigingen dan cookies. Tokens kunnen bijvoorbeeld niet worden gebruikt om het gebruikersaccount te beheren of het wachtwoord van een gebruiker te wijzigen, tenzij dergelijke functionaliteit expliciet wordt geïmplementeerd.
- Tokens hebben een korte levensduur, één uur, waardoor het aanvalsvenster wordt beperkt. Tokens kunnen ook op elk gewenst moment worden ingetrokken.
- Zelfstandige JWT's bieden garanties voor de client en server over het verificatieproces. Een client heeft bijvoorbeeld de middelen om te detecteren en te valideren dat de tokens die worden ontvangen legitiem zijn en zijn verzonden als onderdeel van een bepaald verificatieproces. Als een derde partij een token midden in het verificatieproces probeert te wijzigen, kan de client het overgeschakelde token detecteren en voorkomen dat het wordt gebruikt.
- Tokens met OAuth en OIDC zijn niet afhankelijk van de gebruikersagent die correct werkt om ervoor te zorgen dat de app veilig is.
- Op tokens gebaseerde protocollen, zoals OAuth en OIDC, zorgen ervoor dat gebruikers van gehoste Blazor WebAssembly-oplossingsclients en zelfstandige Blazor Webassembly-apps met dezelfde set beveiligingskenmerken kunnen verifiëren en autoriseren.
Belangrijk
Voor versies van ASP.NET Core die Duende Identity Server in Blazor projectsjablonen gebruiken, moet Duende Software- mogelijk een licentiekosten betalen voor productiegebruik van Duende Identity Server. Zie Migreren van ASP.NET Core 5.0 naar 6.0voor meer informatie.
Verificatieproces met OIDC
De Microsoft.AspNetCore.Components.WebAssembly.Authentication
-bibliotheek biedt verschillende primitieven voor het implementeren van verificatie en autorisatie met behulp van OIDC. In algemene termen werkt verificatie als volgt:
- Wanneer een anonieme gebruiker de aanmeldingsknop selecteert of een Razor onderdeel of pagina aanvraagt met het
[Authorize]
kenmerk toegepast, wordt de gebruiker omgeleid naar de aanmeldingspagina van de app (/authentication/login
). - Op de aanmeldingspagina bereidt de verificatiebibliotheek zich voor op een omleiding naar het autorisatie-eindpunt. Het autorisatie-eindpunt bevindt zich buiten de Blazor WebAssembly-app en kan worden gehost op een afzonderlijke oorsprong. Het eindpunt is verantwoordelijk voor het bepalen of de gebruiker is geverifieerd en voor het uitgeven van een of meer tokens in reactie. De authenticatiebibliotheek biedt een inlogcallback om de authenticatierespons te ontvangen.
- Als de gebruiker niet is geverifieerd, wordt de gebruiker omgeleid naar het onderliggende verificatiesysteem. Dit is meestal ASP.NET Core Identity.
- Als de gebruiker al is geverifieerd, genereert het autorisatie-eindpunt de juiste tokens en stuurt de browser terug naar het aanmeldingsaanroepeindpunt (
/authentication/login-callback
).
- Wanneer de Blazor WebAssembly-app het callback-eindpunt voor aanmelding (
/authentication/login-callback
) laadt, wordt het verificatieantwoord verwerkt.- Als het verificatieproces is voltooid, wordt de gebruiker geverifieerd en optioneel teruggestuurd naar de oorspronkelijke beveiligde URL die de gebruiker heeft aangevraagd.
- Als het verificatieproces om welke reden dan ook mislukt, wordt de gebruiker verzonden naar de mislukte aanmeldingspagina (
/authentication/login-failed
), waar een fout wordt weergegeven.
Authentication
-onderdeel
Het Authentication
-onderdeel (Authentication.razor
) verwerkt externe verificatiebewerkingen en staat de app toe om:
- Configureer app-routes voor verificatiestatussen.
- Stel UI-inhoud in voor verificatiestatussen.
- Verificatiestatus beheren.
Verificatieacties, zoals het registreren of aanmelden bij een gebruiker, worden doorgegeven aan het RemoteAuthenticatorViewCore<TAuthenticationState>-onderdeel van het Blazor framework, dat de status van verificatiebewerkingen behoudt en beheert.
Zie ASP.NET Core Blazor WebAssembly aanvullende beveiligingsscenario'svoor meer informatie en voorbeelden.
Machtiging
In Blazor WebAssembly apps kunnen autorisatiecontroles worden overgeslagen omdat alle code aan de clientzijde kan worden gewijzigd door gebruikers. Hetzelfde geldt voor alle app-technologieën aan de clientzijde, waaronder JavaScript SPA-frameworks of systeemeigen apps voor elk besturingssysteem.
Altijd autorisatiecontroles uitvoeren op de server binnen API-eindpunten die worden geopend door uw app aan de clientzijde.
Verificatie aanpassen
Blazor WebAssembly biedt methoden voor het toevoegen en ophalen van aanvullende parameters voor de onderliggende verificatiebibliotheek voor het uitvoeren van externe verificatiebewerkingen bij externe id-providers.
Als u extra parameters wilt doorgeven, biedt NavigationManager ondersteuning voor het doorgeven en ophalen van de status van de geschiedenisvermelding bij het uitvoeren van externe locatieveranderingen. Zie de volgende bronnen voor meer informatie:
- Blazor Basisprincipes>Routering en navigatie artikel
- MDN-documentatie: Geschiedenis-API
De status die is opgeslagen door de Geschiedenis-API biedt de volgende voordelen voor externe verificatie:
- De status die wordt doorgegeven aan het beveiligde app-eindpunt, is gekoppeld aan de navigatie die wordt uitgevoerd om de gebruiker te verifiëren op het
authentication/login
-eindpunt. - Extra werk bij het coderen en decoderen van gegevens wordt vermeden.
- Beveiligingsproblemen worden verminderd. In tegenstelling tot het gebruik van de querytekenreeks om de navigatiestatus op te slaan, kan een navigatie op het hoogste niveau of invloed van een andere oorsprong de status die is opgeslagen door de Geschiedenis-API niet instellen.
- De geschiedenisvermelding wordt vervangen na een geslaagde verificatie, dus de status die is gekoppeld aan de geschiedenisvermelding wordt verwijderd en vereist geen opschoning.
InteractiveRequestOptions vertegenwoordigt de aanvraag voor de id-provider voor het aanmelden of inrichten van een toegangstoken.
NavigationManagerExtensions biedt de NavigateToLogin methode voor een aanmeldingsbewerking en NavigateToLogout voor een afmeldingsbewerking. De methoden roepen NavigationManager.NavigateToaan, waarbij de status van de geschiedenisvermelding wordt ingesteld met een doorgegeven InteractiveRequestOptions of een nieuw InteractiveRequestOptions exemplaar dat door de methode is gecreëerd voor:
- Een gebruiker die zich aanmeldt (InteractionType.SignIn) met de huidige URI als terugkeer-URL.
- Een gebruiker die zich afmeldt (InteractionType.SignOut) met de retour-URL.
De volgende verificatiescenario's worden behandeld in het ASP.NET Core Blazor WebAssembly aanvullende beveiligingsscenario's artikel:
- Het aanmeldingsproces aanpassen
- Afmelden met een aangepaste retour-URL
- Opties aanpassen voordat u een token interactief verkrijgt
- Opties aanpassen bij het gebruik van een IAccessTokenProvider
- Verkrijg het aanmeldingspad uit de authenticatieopties
Autorisatie vereisen voor de hele app
Pas het kenmerk [Authorize]
toe (API-documentatie) op elk Razor onderdeel van de app met behulp van één van de volgende methoden:
Voeg in het importbestand van de app een
@using
-instructie toe voor de Microsoft.AspNetCore.Authorization-naamruimte, met een@attribute
-instructie voor het kenmerk[Authorize]
._Imports.razor
:@using Microsoft.AspNetCore.Authorization @attribute [Authorize]
Anonieme toegang tot het
Authentication
-onderdeel toestaan om omleiding naar de id-provider toe te staan. Voeg de volgende Razor code toe aan hetAuthentication
onderdeel onder de@page
richtlijn.Authentication.razor
:@using Microsoft.AspNetCore.Components.WebAssembly.Authentication @attribute [AllowAnonymous]
Voeg het kenmerk toe aan elk Razor onderdeel onder de
@page
-instructie:@using Microsoft.AspNetCore.Authorization @attribute [Authorize]
Notitie
Het instellen van een AuthorizationOptions.FallbackPolicy op een beleid met RequireAuthenticatedUser wordt niet ondersteund.
Gebruik één identiteitsprovider-appregistratie per app
Sommige artikelen in dit Overzicht betrekking hebben op Blazor hostingscenario's waarbij twee of meer apps betrokken zijn. Een zelfstandige Blazor WebAssembly-app maakt gebruik van web-API met geverifieerde gebruikers voor toegang tot serverbronnen en gegevens die worden geleverd door een server-app.
Wanneer dit scenario wordt geïmplementeerd in documentatievoorbeelden, worden twee registraties van id-providers gebruikt, één voor de client-app en één voor de server-app. Het gebruik van afzonderlijke registraties, bijvoorbeeld in Microsoft Entra-id, is niet strikt vereist. Het gebruik van twee registraties is echter een best practice voor beveiliging, omdat hiermee de registraties per app worden geïsoleerd. Door afzonderlijke registraties te gebruiken, kunnen ook onafhankelijke configuraties van de client- en serverregistraties worden uitgevoerd.
Enkele van de artikelen in dit Overzicht betrekking hebben op een van de volgende Blazor hostingscenario's die betrekking hebben op twee of meer apps:
- Een gehoste Blazor WebAssembly-oplossing, die bestaat uit twee apps: een Blazor WebAssembly-app aan de clientzijde en een ASP.NET Core-host-app aan de serverzijde. Geverifieerde gebruikers voor de client-app hebben toegang tot serverbronnen en gegevens die worden geleverd door de server-app.
- Een zelfstandige Blazor WebAssembly-app die gebruikmaakt van web-API met geverifieerde gebruikers voor toegang tot serverbronnen en gegevens die worden geleverd door een server-app. Dit scenario is vergelijkbaar met het gebruik van een gehoste Blazor WebAssembly-oplossing; maar in dit geval wordt de client-app niet gehost door de server-app.
Wanneer deze scenario's worden geïmplementeerd in documentatievoorbeelden, worden twee registraties van id-providers gebruikt, één voor de client-app en één voor de server-app. Het gebruik van afzonderlijke registraties, bijvoorbeeld in Microsoft Entra-id, is niet strikt vereist. Het gebruik van twee registraties is echter een best practice voor beveiliging, omdat hiermee de registraties per app worden geïsoleerd. Door afzonderlijke registraties te gebruiken, kunnen ook onafhankelijke configuraties van de client- en serverregistraties worden uitgevoerd.
Tokens vernieuwen
Hoewel vernieuwingstokens niet kunnen worden beveiligd in Blazor WebAssembly apps, kunnen ze worden gebruikt als u ze implementeert met de juiste beveiligingsstrategieën.
Voor zelfstandige Blazor WebAssembly-apps in ASP.NET Core in .NET 6 of hoger raden we u aan het volgende te gebruiken:
- De OAuth 2.0-autorisatiecodestroom (Code) met Proof Key for Code Exchange (PKCE).
- Een refresh token met een korte geldigheidsduur.
- Een geroteerd verversingstoken.
- Een verversingstoken met een vervaldatum waarna een nieuwe interactieve autorisatieprocedure nodig is om de gebruikersreferenties te verversen.
Voor gehoste Blazor WebAssembly-oplossingen kunnen vernieuwingstokens worden onderhouden en gebruikt door de app aan de serverzijde om toegang te krijgen tot API's van derden. Zie ASP.NET Core Blazor WebAssembly aanvullende beveiligingsscenario'svoor meer informatie.
Zie de volgende bronnen voor meer informatie:
- Refresh-tokens van het Microsoft Identity Platform: levensduur van refresh-tokens
- OAuth 2.0 voor Browser-Based-apps (IETF-specificatie)
Claims voor gebruikers instellen
Apps vereisen vaak claims voor gebruikers op basis van een web-API-aanroep naar een server. Claims worden bijvoorbeeld vaak gebruikt om autorisatie-in een app te tot stand te brengen. In deze scenario's vraagt de app een toegangstoken aan om toegang te krijgen tot de service en gebruikt het token om gebruikersgegevens te verkrijgen voor het maken van claims.
Zie de volgende bronnen voor voorbeelden:
- Aanvullende scenario's: de van de gebruiker aanpassen
- ASP.NET Core Blazor WebAssembly met Microsoft Entra ID-groepen en -rollen
Ondersteuning voor prerendering
Prerendering wordt niet ondersteund voor authenticatie-eindpunten (/authentication/
padsegment).
Prerendering wordt niet ondersteund voor authenticatie-eindpunten (/authentication/
padsegment).
Zie ASP.NET Core Blazor WebAssembly aanvullende beveiligingsscenario'svoor meer informatie.
Azure App Service in Linux met Identity Server
Geef de verlener expliciet op bij de implementatie in Azure App Service op Linux met Identity Server.
Voor meer informatie, zie Gebruik Identity om een web-API-back-end voor SPA'ste beveiligen.
Windows-verificatie
We raden u niet aan Windows-verificatie te gebruiken met Blazor WebAssembly of met een ander SPA-framework. U wordt aangeraden op tokens gebaseerde protocollen te gebruiken in plaats van Windows-verificatie, zoals OIDC met Active Directory Federation Services (ADFS).
Als Windows-verificatie wordt gebruikt met Blazor Webassembly of een ander SPA-framework, zijn er aanvullende maatregelen nodig om de app te beschermen tegen bedreigingen van cross-site request forgery (CSRF)-tokens. Dezelfde zorgen die van toepassing zijn op cookies zijn van toepassing op Windows-verificatie met de toevoeging dat Windows-verificatie geen mechanisme biedt om het delen van de verificatiecontext tussen oorsprongen te voorkomen. Apps die Gebruikmaken van Windows-verificatie zonder extra beveiliging van CSRF, moeten ten minste worden beperkt tot het intranet van een organisatie en niet worden gebruikt op het open internet.
Zie Cross-Site Request Forgery -aanvallen (XSRF/CSRF) voorkomen in ASP.NET Corevoor meer informatie.
Een SignalR-hub beveiligen
Als u een SignalR hub in het server-API-project wilt beveiligen, past u het kenmerk [Authorize]
toe op de hubklasse of op methoden van de hubklasse.
In een clientproject met prerendering, zoals de gehoste Blazor WebAssembly (ASP.NET Core in .NET 7 of eerder) of een Blazor Web App (ASP.NET Core in .NET 8 of hoger), raadpleeg de richtlijnen in ASP.NET Core BlazorSignalR handleiding.
In een clientprojectcomponent zonder vooraf renderen, zoals zelfstandige componenten zoals Blazor WebAssemblyof niet-browser-apps, voorziet u een toegangstoken voor de hubverbinding, zoals het volgende voorbeeld aantoont. Zie Verificatie en autorisatie in ASP.NET Core SignalRvoor meer informatie.
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@inject IAccessTokenProvider TokenProvider
@inject NavigationManager Navigation
...
var tokenResult = await TokenProvider.RequestAccessToken();
if (tokenResult.TryGetToken(out var token))
{
hubConnection = new HubConnectionBuilder()
.WithUrl(Navigation.ToAbsoluteUri("/chathub"),
options => { options.AccessTokenProvider = () => Task.FromResult(token?.Value); })
.Build();
...
}
Loggen
Deze sectie is van toepassing op Blazor WebAssembly apps in ASP.NET Core in .NET 7 of hoger.
Als u foutopsporing of traceringslogboekregistratie wilt inschakelen, raadpleegt u de sectie verificatielogboekregistratie (Blazor WebAssembly) in een 7.0- of latere versie van het ASP.NET Core Blazor-logboekregistratie artikel.
De WebAssembly-sandbox
WebAssembly sandbox- beperkt de toegang tot de omgeving van het systeem dat WebAssembly-code uitvoert, inclusief toegang tot I/O-subsystemen, systeemopslag en bronnen en het besturingssysteem. De isolatie tussen WebAssembly-code en het systeem dat de code uitvoert, maakt WebAssembly een veilig coderingsframework voor systemen. WebAssembly is echter kwetsbaar voor side-channel-aanvallen op hardwareniveau. Normale voorzorgsmaatregelen en due diligence bij hetbronnen van hardware en het plaatsen van beperkingen voor toegang tot hardware zijn van toepassing.
WebAssembly is niet eigendom van of wordt beheerd door Microsoft.
Zie de volgende W3C-resources voor meer informatie:
- WebAssembly: Beveiliging
- WebAssembly-specificatie: Beveiligingsoverwegingen
- W3C WebAssembly Community-groep: Feedback en problemen: de koppeling W3C WebAssembly Community Group wordt alleen ter referentie verstrekt, waardoor duidelijk wordt dat beveiligingsproblemen en bugs in WebAssembly voortdurend worden gepatcht, vaak gerapporteerd en aangepakt door de browser. Stuur geen feedback of foutenrapporten over Blazor naar de W3C WebAssembly-communitygroep.Blazor feedback moet worden gemeld aan de Microsoft ASP.NET Core-producteenheid. Als de Microsoft-producteenheid bepaalt dat er een onderliggend probleem met WebAssembly bestaat, nemen ze de juiste stappen om het probleem aan de W3C WebAssembly-communitygroep te melden.
Implementatierichtlijnen
In dit Overzicht geven de artikelen informatie over het authenticeren van gebruikers in Blazor WebAssembly-apps voor specifieke providers.
Zelfstandige Blazor WebAssembly-apps:
- Algemene richtlijnen voor OIDC-providers en de webassembly-verificatiebibliotheek
- Microsoft Accounts
- Microsoft Entra-id (ME-ID)
- Azure Active Directory (AAD) B2C
Gehoste Blazor WebAssembly-apps:
Meer configuratierichtlijnen vindt u in de volgende artikelen:
- ASP.NET Core Blazor WebAssembly aanvullende beveiligingsscenario's
- Graph API gebruiken met ASP.NET Core Blazor WebAssembly
De autorisatiecodestroom gebruiken met PKCE
Microsoft Identity Platform's Microsoft Authentication Library for JavaScript (MSAL) v2.0 of hoger biedt ondersteuning voor de Autorisatiecodestroom met Proof Key for Code Exchange - en CORS- (Cross-Origin Resource Sharing) voor toepassingen met één pagina, waaronder Blazor.
Microsoft raadt het gebruik van impliciete toekenning niet aan.
Zie de volgende bronnen voor meer informatie:
- Ondersteuning van authenticatiestroom in MSAL: Impliciete toekenning
- Microsoft Identity Platform en impliciete toekenningsstroom: Geef de voorkeur aan de verificatiecodestroom
- Microsoft Identity Platform en OAuth 2.0-autorisatiecodestroom
Aanvullende informatiebronnen
- Documentatie voor Microsoft Identity Platform
-
Configureer ASP.NET Core voor gebruik met proxyservers en load balancers
- Middleware voor doorgestuurde headers gebruiken om HTTPS-schemagegevens over proxyservers en interne netwerken te behouden.
- Aanvullende scenario's en use cases, waaronder handmatige schemaconfiguratie, wijzigingen in aanvraagpaden voor de juiste aanvraagroutering en het doorsturen van het aanvraagschema voor Linux- en niet-IIS-omgekeerde proxy's.
- prerendering met verificatie
- WebAssembly: Beveiliging
- WebAssembly-specificatie: Beveiligingsoverwegingen