Schützen von serverseitigen Blazor-Apps als ASP.NET Core-Anwendungen
Hinweis
Dies ist nicht die neueste Version dieses Artikels. Informationen zum aktuellen Release finden Sie in der .NET 8-Version dieses Artikels.
Warnung
Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der Supportrichtlinie für .NET und .NET Core. Informationen zum aktuellen Release finden Sie in der .NET 8-Version dieses Artikels.
Wichtig
Diese Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Freigabe möglicherweise noch wesentlichen Änderungen unterliegt. Microsoft gibt keine Garantie, weder ausdrücklich noch impliziert, hinsichtlich der hier bereitgestellten Informationen.
Informationen zum aktuellen Release finden Sie in der .NET 8-Version dieses Artikels.
In diesem Artikel wird erläutert, wie Sie serverseitige Blazor-Apps als ASP.NET Core-Anwendungen schützen.
Das Schützen von serverseitigen Blazor-Apps funktioniert genau wie bei ASP.NET Core-Apps. Weitere Informationen finden Sie in den Artikeln unter Sicherheitsaspekte für ASP.NET Core.
Der Authentifizierungskontext wird nur beim Starten der App eingerichtet, d. h. wenn die App zum ersten Mal eine Verbindung mit dem WebSocket herstellt. Der Authentifizierungskontext wird für die Lebensdauer der Verbindung beibehalten. Apps überprüfen den Authentifizierungsstatus der Benutzenden regelmäßig alle 30 Minuten.
Wenn die App Benutzer für benutzerdefinierte Dienste erfassen oder auf Updates des Benutzers reagieren muss, lesen Sie Zusätzliche Sicherheitsszenarios für ASP.NET Core Blazor (serverseitig).
Blazor unterscheidet sich von herkömmlichen, servergerenderten Webanwendungen, die bei jeder Seitennavigation neue HTTP-Anfragen mit Cookies stellen. Die Authentifizierung wird bei Navigationsereignissen überprüft. Cookies sind jedoch nicht beteiligt. Cookies werden nur gesendet, wenn eine HTTP-Anforderung an einen Server erfolgt, was nicht der Fall ist, wenn die Person in einer Blazor-App navigiert. Während der Navigation wird der Authentifizierungsstatus des Benutzers innerhalb der Blazor-Verbindung überprüft, den Sie mithilfe der RevalidatingAuthenticationStateProvider
-Abstraktion jederzeit auf dem Server aktualisieren können.
Wichtig
Das Implementieren eines benutzerdefinierten NavigationManager
zum Erzielen der Authentifizierungsvalidierung während der Navigation wird nicht empfohlen. Wenn die App während der Navigation benutzerdefinierte Authentifizierungsstatuslogik ausführen muss, verwenden Sie einen benutzerdefinierten AuthenticationStateProvider
.
Hinweis
Die Codebeispiele in diesem Artikel verwenden Nullwerte zulassende Verweistypen (Nullable Reference Types, NRTs) und die statische Analyse des NULL-Zustands des .NET-Compilers, die in ASP.NET Core in .NET 6 oder höher unterstützt werden. Entfernen Sie bei ASP.NET Core 5.0 oder früher die NULL-Typbezeichnung (?
) aus den Beispielen in diesem Artikel.
Projektvorlage
Erstellen Sie eine neue serverseitige Blazor-App, indem Sie die Anleitung unter Tools für ASP.NET Core Blazor befolgen.
Nachdem Sie die Vorlage für serverseitige Apps ausgewählt und das Projekt konfiguriert haben, wählen Sie unter Authentifizierungstyp die Authentifizierung der App aus:
- Keine (Standardwert): Keine Authentifizierung.
- Einzelne Konten: Benutzerkonten werden mithilfe von ASP.NET Core Identity in der App gespeichert.
- Keine (Standardwert): Keine Authentifizierung.
- Einzelne Konten: Benutzerkonten werden mithilfe von ASP.NET Core Identity in der App gespeichert.
- Microsoft identity-Plattform: Weitere Informationen finden Sie unter ASP.NET Core Blazor-Authentifizierung und -Autorisierung.
- Windows: Verwenden Sie die Windows-Authentifizierung.
BlazorIdentity-Benutzeroberfläche (einzelne Konten)
Blazor unterstützt das Generieren einer vollständigen Blazor-basierten Identity-Benutzeroberfläche, wenn Sie die Authentifizierungsoption für einzelne Konten auswählen.
Die Blazor Web App-Vorlage erstellt ein Identity-Codegerüst für eine SQL Server-Datenbank. Die Befehlszeilenversion verwendet SQLite und enthält eine SQLite-Datenbank für Identity.
Die -Vorlage:
- Unterstützt Szenarien für interaktives serverseitiges Rendering (interactive SSR) und clientseitiges Rendering (CSR) mit authentifizierten Benutzenden.
- Fügt IdentityRazor-Komponenten und zugehörige Logik für routinemäßige Authentifizierungsaufgaben hinzu, wie z. B. das An- und Abmelden von Benutzenden. Die Identity-Komponenten unterstützen auch erweiterte Identity-Funktionen, wie z. B. Kontobestätigung und Kennwortwiederherstellung und Multi-Faktor-Authentifizierung mithilfe einer Drittanbieter-App. Beachten Sie, dass die Identity-Komponenten selbst keine Interaktivität unterstützen.
- Fügt die zu Identity zugehörigen Pakete und Abhängigkeiten hinzu
- Verweist auf die Identity-Pakete in
_Imports.razor
- Erstellt eine benutzerdefinierte Identity-Klasse für Benutzer*innen (
ApplicationUser
). - Erstellt und registriert einen EF Core-Datenbankkontext (
ApplicationDbContext
). - Konfiguriert das Routing für die integrierten Identity-Endpunkte.
- Umfasst die Validierungs- und Geschäftslogik von Identity
Um die Identity-Komponenten des Blazor-Frameworks zu untersuchen, greifen Sie darauf in den Ordnern Pages
und Shared
des Ordners Account
in der Blazor Web App-Projektvorlage (Verweisquelle) zu.
Wenn Sie die interaktiven WebAssembly- oder interaktiven Auto-Rendermodi auswählen, verarbeitet der Server alle Authentifizierungs- und Autorisierungsanforderungen und die Identity-Komponenten werden statisch auf dem Server im Hauptprojekt der Blazor Web App gerendert.
Das Framework stellt einen benutzerdefiniertenAuthenticationStateProvider sowohl im Server- als auch im Clientprojekt (.Client
) bereit, um den Authentifizierungsstatus des der Benutzerin oder des Benutzers an den Browser zu übertragen. Das Serverprojekt ruft AddAuthenticationStateSerialization
auf, während das Clientprojekt AddAuthenticationStateDeserialization
aufruft. Die Authentifizierung auf dem Server statt auf dem Client ermöglicht der Anwendung den Zugriff auf den Authentifizierungsstatus während des Prerenderings und vor der Initialisierung der .NET WebAssembly-Laufzeit. Die benutzerdefinierten AuthenticationStateProvider-Implementierungen verwenden den Dienst Persistent Component State (PersistentComponentState), um den Authentifizierungsstatus in HTML-Kommentare zu serialisieren und ihn dann von WebAssembly zurückzulesen, um eine neue AuthenticationState-Instanz zu erstellen. Weitere Informationen finden Sie im Abschnitt Verwalten des Authentifizierungsstatus in Blazor Web Apps.
Nur für Interactive Server-Lösungen handelt es sich bei IdentityRevalidatingAuthenticationStateProvider
(Referenzquelle) um einen serverseitigen AuthenticationStateProvider, der alle 30 Minuten den Sicherheitsstempel für das verbundene Benutzerkonto revalidiert, solange eine interaktive Verbindung besteht.
Wenn Sie die interaktiven WebAssembly- oder interaktiven Auto-Rendermodi auswählen, verarbeitet der Server alle Authentifizierungs- und Autorisierungsanforderungen und die Identity-Komponenten werden statisch auf dem Server im Hauptprojekt der Blazor Web App gerendert. Die Projektvorlage enthält eine PersistentAuthenticationStateProvider
-Klasse (Verweisquelle) im .Client
-Projekt, um den Authentifizierungsstatus von Benutzer*innen zwischen dem Server und dem Browser zu synchronisieren. Die Klasse ist eine benutzerdefinierte Implementierung von AuthenticationStateProvider. Der Anbieter verwendet den Dienst Persistent Component State (PersistentComponentState), um den Authentifizierungsstatus zu prerendern und auf der Seite beizubehalten.
Im Hauptprojekt einer Blazor Web App heißt der Authentifizierungsstatusanbieter entweder IdentityRevalidatingAuthenticationStateProvider
(Verweisquelle) (nur Serverinteraktivitätslösungen) oder PersistingRevalidatingAuthenticationStateProvider
(Verweisquelle) (WebAssembly- oder Auto-Interaktivitätslösungen).
BlazorIdentity hängt von DbContext Instanzen ab, die nicht von einer Factoryerstellt wurden, was beabsichtigt ist, da DbContext die Komponenten der Projektvorlage Identity ausreichen, um statisch zu rendern, ohne Interaktivität zu unterstützen.
Eine Beschreibung, wie globale interaktive Rendermodi auf Nicht-Identity-Komponenten angewandt werden und gleichzeitig statisches SSR für die Identity-Komponenten erzwungen wird, finden Sie unter ASP.NET Core-Rendermodi Blazor.
Weitere Informationen zum Speichern des vorab gerenderten Status finden Sie unter Vorabrendern von ASP.NET Core Razor-Komponenten.
Weitere Informationen zur BlazorIdentity-Benutzeroberfläche und Anleitungen zum Integrieren externer Anmeldungen über soziale Websites finden Sie unter Neuerungen bei identity in .NET 8.
Hinweis
Dokumentationslinks zur .NET-Referenzquelle laden in der Regel den Standardbranch des Repositorys, der die aktuelle Entwicklung für das nächste Release von .NET darstellt. Um ein Tag für ein bestimmtes Release auszuwählen, wählen Sie diesen mit der Dropdownliste Switch branches or tags (Branches oder Tags wechseln) aus. Weitere Informationen finden Sie unter How to select a version tag of ASP.NET Core source code (dotnet/AspNetCore.Docs #26205) (Auswählen eines Versionstags von ASP.NET Core-Quellcode (dotnet/AspNetCore.Docs #26205)).
Verwalten des Authentifizierungsstatus in Blazor Web Apps
Dieser Abschnitt gilt für Blazor Web Apps, die Folgendes nutzen:
- Individuelle Konten
- Clientseitiges Rendering (CSR, WebAssembly-basierte Interaktivität).
Ein clientseitiger Authentifizierungsstatusanbieter wird nur in Blazor verwendet und nicht in das ASP.NET Core-Authentifizierungssystem integriert. Beim Vorabrendering berücksichtigt Blazor die auf der Seite definierten Metadaten und verwendet das ASP.NET Core-Authentifizierungssystem, um zu ermitteln, ob der/die Benutzer*in authentifiziert ist. Wenn Benutzer*innen von einer Seite zu einer anderen navigieren, wird ein clientseitiger Authentifizierungsanbieter verwendet. Wenn Benutzer*innen die Seite aktualisieren (Neuladen der ganzen Seite), ist der clientseitige Authentifizierungsstatusanbieter nicht an der Authentifizierungsentscheidung auf dem Server beteiligt. Da der Status der Benutzer*innen vom Server nicht beibehalten wird, gehen alle clientseitig verwalteten Authentifizierungsstatus verloren.
Um dies zu beheben sollten Sie am besten die Authentifizierung im ASP.NET Core-Authentifizierungssystem durchzuführen. Der clientseitige Authentifizierungsstatusanbieter hat dann nur noch die Aufgabe, den Authentifizierungsstatus der Benutzer*innen anzuzeigen. Beispiele dafür, wie Sie dies mit verschiedenen Authentifizierungsstatusanbietern erreichen, finden Sie in der Projektvorlage für Blazor Web App und in der Beschreibung unten.
Rufen Sie in der Datei Program
des Serverprojekts AddAuthenticationStateSerialization
auf. Dadurch wird die AuthenticationState serialisiert, die vom Server AuthenticationStateProvider zurückgegeben wird. Dies geschieht mithilfe des Diensts Persistent Component State (PersistentComponentState):
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents()
.AddAuthenticationStateSerialization();
Die API serialisiert nur die serverseitigen Namens- und Rollenansprüche für den Zugriff im Browser. Um alle Ansprüche einzuschließen, legen Sie SerializeAllClaims
auf true
fest (im serverseitigen Aufruf AddAuthenticationStateSerialization
):
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents()
.AddAuthenticationStateSerialization(
options => options.SerializeAllClaims = true);
Rufen Sie im Client (.Client
) in der Projektdatei Program
AddAuthenticationStateDeserialization
auf, das einen AuthenticationStateProvider hinzufügt, wo der AuthenticationState deserialisiert wird. Dies geschieht mit AuthenticationStateData
und dem Dienst Persistent Component State (PersistentComponentState). Es sollte ein entsprechender Aufruf von AddAuthenticationStateSerialization
im Serverprojekt vorhanden sein.
builder.Services.AddAuthorizationCore();
builder.Services.AddCascadingAuthenticationState();
builder.Services.AddAuthenticationStateDeserialization();
PersistingRevalidatingAuthenticationStateProvider
(Verweisquelle): Für Blazor Web Apps, die das interaktive serverseitige Rendering (interactive SSR) und das clientseitige Rendering (CSR) nutzen. Dies ist ein serverseitiger AuthenticationStateProvider, der alle 30 Minuten den Sicherheitsstempel für Benutzer*innen mit einer interaktiven Verbindung zurückgibt. Außerdem wird der Dienst für den persistenten Komponentenstatus verwendet, um den Authentifizierungsstatus an den Client zu senden, der dann für die Lebensdauer des CSR festgelegt wird.PersistingServerAuthenticationStateProvider
(Verweisquelle): Für Blazor Web Apps, die nur CSR nutzen. Dies ist ein serverseitiger AuthenticationStateProvider, der den Dienst für den persistenten Komponentenstatus verwendet, um den Authentifizierungsstatus an den Client zu senden, der dann für die Lebensdauer des CSR festgelegt wird.PersistentAuthenticationStateProvider
(Verweisquelle): Für Blazor Web Apps, die CSR nutzen. Dies ist ein clientseitiger AuthenticationStateProvider, der den Authentifizierungsstatus der Benutzer*innen bestimmt, indem nach Daten gesucht wird, die auf der Seite gespeicherten wurden, als diese auf dem Server gerendert wurde. Dieser Authentifizierungsstatus ist für die Lebensdauer des CSR unveränderlich. Wenn sich Benutzer*innen an- oder abmelden muss, muss die Seite vollständig neu geladen werden. Dies stellt nur einen Benutzernamen und eine E-Mail für die Anzeige bereit. Es sind keine Token enthalten, die sich beim Senden von nachfolgenden Anforderungen beim Server authentifizieren und separat mithilfe eines cookie aus denHttpClient
-Anforderungen an den Server verarbeitet werden.
Hinweis
Dokumentationslinks zur .NET-Referenzquelle laden in der Regel den Standardbranch des Repositorys, der die aktuelle Entwicklung für das nächste Release von .NET darstellt. Um ein Tag für ein bestimmtes Release auszuwählen, wählen Sie diesen mit der Dropdownliste Switch branches or tags (Branches oder Tags wechseln) aus. Weitere Informationen finden Sie unter How to select a version tag of ASP.NET Core source code (dotnet/AspNetCore.Docs #26205) (Auswählen eines Versionstags von ASP.NET Core-Quellcode (dotnet/AspNetCore.Docs #26205)).
Gerüst Identity
Weitere Informationen zum Gerüstbau für Identity in einer serverseitigen Blazor-App finden Sie unter Gerüstbau für Identity in ASP.NET Core-Projekten.
Gerüstbau für Identity in einer serverseitigen Blazor-App:
Zusätzliche Ansprüche und Token von externen Anbietern
Informationen zum Speichern zusätzlicher Ansprüche von externen Anbietern finden Sie unter Beibehalten zusätzlicher Ansprüche und Token von externen Anbietern in ASP.NET Core.
Azure App Service für Linux mit Identity Server
Geben Sie den Zertifikataussteller explizit an, wenn Sie eine Bereitstellung auf Azure App Service für Linux mit Identity Server durchführen. Weitere Informationen finden Sie unter Verwenden von Identity zum Sichern eines Web-API-Back-Ends für SPAs.
Injizieren Sie AuthenticationStateProvider
für Dienste, die einer Komponente zugeordnet sind.
Versuchen Sie nicht, AuthenticationStateProvider innerhalb eines benutzerdefinierten Bereichs aufzulösen, da dies zur Erstellung einer neuen Instanz von AuthenticationStateProvider führt, die nicht ordnungsgemäß initialisiert wird.
Um auf AuthenticationStateProvider innerhalb eines Diensts zuzugreifen, der einer Komponente zugeordnet ist, injizieren Sie AuthenticationStateProvider mit der @inject
-Direktive oder dem [Inject]
-Attribut und übergeben den Wert als Parameter an den Dienst. Dieser Ansatz stellt sicher, dass die richtige, initialisierte Instanz von AuthenticationStateProvider für jede Benutzer-App-Instanz verwendet wird.
ExampleService.cs
:
public class ExampleService
{
public async Task<string> ExampleMethod(AuthenticationStateProvider authStateProvider)
{
var authState = await authStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
if (user.Identity is not null && user.Identity.IsAuthenticated)
{
return $"{user.Identity.Name} is authenticated.";
}
else
{
return "The user is NOT authenticated.";
}
}
}
Registrieren Sie den Dienst als bereichsbezogen. In einer serverseitigen Blazor-App verfügen bereichsbezogene Dienste über eine Lebensdauer, die der Dauer der Clientverbindung entspricht.
Gehen Sie in der Program
-Datei folgendermaßen vor:
builder.Services.AddScoped<ExampleService>();
In Startup.ConfigureServices
von Startup.cs
:
services.AddScoped<ExampleService>();
In der folgenden InjectAuthStateProvider
-Komponente:
- Die Komponente erbt OwningComponentBase.
- AuthenticationStateProvider wird injiziert und an
ExampleService.ExampleMethod
übergeben. ExampleService
wird mit OwningComponentBase.ScopedServices und GetRequiredServiceaufgelöst, wodurch die richtige, initialisierte Instanz vonExampleService
zurückgegeben wird, die für die Lebensdauer der Verbindung des Benutzers vorhanden ist.
InjectAuthStateProvider.razor
:
@page "/inject-auth-state-provider"
@inherits OwningComponentBase
@inject AuthenticationStateProvider AuthenticationStateProvider
<h1>Inject <code>AuthenticationStateProvider</code> Example</h1>
<p>@message</p>
@code {
private string? message;
private ExampleService? ExampleService { get; set; }
protected override async Task OnInitializedAsync()
{
ExampleService = ScopedServices.GetRequiredService<ExampleService>();
message = await ExampleService.ExampleMethod(AuthenticationStateProvider);
}
}
@page "/inject-auth-state-provider"
@inject AuthenticationStateProvider AuthenticationStateProvider
@inherits OwningComponentBase
<h1>Inject <code>AuthenticationStateProvider</code> Example</h1>
<p>@message</p>
@code {
private string? message;
private ExampleService? ExampleService { get; set; }
protected override async Task OnInitializedAsync()
{
ExampleService = ScopedServices.GetRequiredService<ExampleService>();
message = await ExampleService.ExampleMethod(AuthenticationStateProvider);
}
}
Weitere Informationen finden Sie in den Anleitungen zu OwningComponentBase unter ASP.NET Core Blazor-Abhängigkeitsinjektion.
Anzeige nicht autorisierter Inhalte beim Vorabendern mit einem benutzerdefinierten AuthenticationStateProvider
Um zu verhindern, dass unzulässige Inhalte, z.B. Inhalte in einer AuthorizeView
Komponente, während des Prerenderings mit einer benutzerdefinierten AuthenticationStateProvider
Anwendung angezeigt werden, wählen Sie einen der folgenden Ansätze:
Implementieren von IHostEnvironmentAuthenticationStateProvider für den benutzerdefinierten AuthenticationStateProvider zur Unterstützung des Vorabrenderings: Eine Beispielimplementierung von IHostEnvironmentAuthenticationStateProvider finden Sie in der BlazorServerAuthenticationStateProvider-Implementierung des Frameworks unter
ServerAuthenticationStateProvider.cs
(Referenzquelle).Hinweis
Dokumentationslinks zur .NET-Referenzquelle laden in der Regel den Standardbranch des Repositorys, der die aktuelle Entwicklung für das nächste Release von .NET darstellt. Um ein Tag für ein bestimmtes Release auszuwählen, wählen Sie diesen mit der Dropdownliste Switch branches or tags (Branches oder Tags wechseln) aus. Weitere Informationen finden Sie unter How to select a version tag of ASP.NET Core source code (dotnet/AspNetCore.Docs #26205) (Auswählen eines Versionstags von ASP.NET Core-Quellcode (dotnet/AspNetCore.Docs #26205)).
Vorabrendering deaktivieren: Geben Sie den Rendermodus der Komponente auf der höchsten Ebene in der App-Hierarchie an, die keine Stammkomponente ist. Legen Sie den Parameter
prerender
dabei auffalse
fest.Hinweis
Die Interaktivität einer Stammkomponente, wie z. B. der
App
-Komponente, wird nicht unterstützt. Daher kann die Voreinstellung nicht direkt von derApp
-Komponente deaktiviert werden.Bei Apps, die auf der Blazor Web App-Projektvorlage basieren, ist das Voarabrendering in der Regel deaktiviert, wenn die
Routes
-Komponente in derApp
-Komponente (Components/App.razor
) verwendet wird:<Routes @rendermode="new InteractiveServerRenderMode(prerender: false)" />
Deaktivieren Sie außerdem das Vorabrendering für die
HeadOutlet
-Komponente:<HeadOutlet @rendermode="new InteractiveServerRenderMode(prerender: false)" />
Sie können den auf die
Routes
-Komponenteninstanz angewendeten Rendermodus auch selektiv steuern. Siehe z. B. ASP.NET Core Blazor Rendermodi.
Deaktivieren des Vorabrenderings: Öffnen Sie die
_Host.cshtml
-Datei, und ändern Sie dasrender-mode
-Attribut des Komponententag-Hilfsprogramms in Server:<component type="typeof(App)" render-mode="Server" />
- Authentifizieren des Benutzers auf dem Server, bevor die App gestartet wird: Bei diesem Ansatz muss die App mit der Identity-basierten Anmeldeseite oder -ansicht auf die anfängliche Anforderung eines Benutzers reagieren und alle Anforderungen an Blazor-Endpunkte verhindern, bis sie authentifiziert werden. Weitere Informationen finden Sie unter Erstellen einer ASP.NET Core-App mit Benutzerdaten, die durch Autorisierung geschützt sind. Nach der Authentifizierung werden nicht autorisierte Inhalte in vorab gerenderten Razor-Komponenten nur angezeigt, wenn der Benutzer wirklich nicht berechtigt ist, den Inhalt anzuzeigen.
User State management
Trotz des Worts „State“ (Zustand) im Namen dient AuthenticationStateProvider nicht zum Speichern des allgemeinen Benutzerzustands. AuthenticationStateProvider gibt nur den Authentifizierungsstatus des Benutzers für die App an, ob er bei der App angemeldet ist und in welchem Namen er angemeldet ist.
Die Authentifizierung verwendet dieselbe ASP.NET Core IdentityAuthentifizierung wie Razor Pages- und MVC-Apps. Der für ASP.NET Core Identity gespeicherte Benutzerzustand wird an Blazor übermittelt, ohne der App zusätzlichen Code hinzuzufügen. Befolgen Sie die Anleitungen in den ASP.NET Core Identity-Artikeln und den Tutorials für die Identity-Features, die in den Blazor-Teilen der App wirksam werden sollen.
Anleitungen zur allgemeinen Zustandsverwaltung außerhalb von ASP.NET Core Identity finden Sie unter ASP.NET Core Blazor-Zustandsverwaltung.
Zusätzliche Sicherheitsabstraktionen
Zwei zusätzliche Abstraktionen sind an der Verwaltung des Authentifizierungsstatus beteiligt:
ServerAuthenticationStateProvider (Referenzquelle): Ein AuthenticationStateProvider, der vom Blazor-Framework verwendet wird, um den Authentifizierungsstatus vom Server abzurufen.
RevalidatingServerAuthenticationStateProvider (Referenzquelle): Eine Basisklasse für AuthenticationStateProvider-Dienste, die vom Blazor-Framework verwendet werden, um einen Authentifizierungsstatus von der Hostumgebung zu empfangen und in regelmäßigen Abständen neu zu aktualisieren.
Das Standardintervall von 30 Minuten für die Neuvalidierung kann in
RevalidatingIdentityAuthenticationStateProvider
(Areas/Identity/RevalidatingIdentityAuthenticationStateProvider.cs
) angepasst werden. Im folgenden Beispiel wird das Intervall auf 20 Minuten verkürzt:protected override TimeSpan RevalidationInterval => TimeSpan.FromMinutes(20);
Hinweis
Dokumentationslinks zur .NET-Referenzquelle laden in der Regel den Standardbranch des Repositorys, der die aktuelle Entwicklung für das nächste Release von .NET darstellt. Um ein Tag für ein bestimmtes Release auszuwählen, wählen Sie diesen mit der Dropdownliste Switch branches or tags (Branches oder Tags wechseln) aus. Weitere Informationen finden Sie unter How to select a version tag of ASP.NET Core source code (dotnet/AspNetCore.Docs #26205) (Auswählen eines Versionstags von ASP.NET Core-Quellcode (dotnet/AspNetCore.Docs #26205)).
Verwaltung des Authentifizierungsstatus beim Abmelden
Der serverseitige Blazor speichert den Authentifizierungsstatus der Benutzenden für die gesamte Lebensdauer des Schaltkreises, auch über Browser-Registerkarten hinweg. Um Benutzende automatisch von allen Browser-Registerkarten abzumelden, wenn sie sich auf einer Registerkarte abmelden, müssen Sie RevalidatingServerAuthenticationStateProvider (Referenzquelle) und ein kurzes RevalidationInterval implementieren.
Hinweis
Dokumentationslinks zur .NET-Referenzquelle laden in der Regel den Standardbranch des Repositorys, der die aktuelle Entwicklung für das nächste Release von .NET darstellt. Um ein Tag für ein bestimmtes Release auszuwählen, wählen Sie diesen mit der Dropdownliste Switch branches or tags (Branches oder Tags wechseln) aus. Weitere Informationen finden Sie unter How to select a version tag of ASP.NET Core source code (dotnet/AspNetCore.Docs #26205) (Auswählen eines Versionstags von ASP.NET Core-Quellcode (dotnet/AspNetCore.Docs #26205)).
Gültigkeitsdauer der temporären Umleitungs-URL
Dieser Abschnitt gilt für Blazor Web Apps.
Verwenden Sie die Option RazorComponentsServiceOptions.TemporaryRedirectionUrlValidityDuration, um die Gültigkeitsdauer des ASP.NET Core Data Protection für temporäre Umleitungs-URLs festzulegen, die durch das Blazor-serverseitige Rendering ausgegeben werden. Diese werden nur vorübergehend verwendet, sodass die Lebensdauer nur lang genug sein muss, damit ein Client die URL empfängt und mit der Navigation zu dieser beginnt. Sie sollte jedoch auch lang genug sein, um eine serverübergreifende Zeitdehnung zu ermöglichen. Der Standardwert beträgt 5 Minuten.
Im folgenden Beispiel wird der Wert auf sieben Minuten verlängert:
builder.Services.AddRazorComponents(options =>
options.TemporaryRedirectionUrlValidityDuration =
TimeSpan.FromMinutes(7));
Zusätzliche Ressourcen
- Schnellstart: Hinzufügen von „Bei Microsoft anmelden“ zu einer ASP.NET Core-Web-App
- Schnellstart: Schützen einer ASP.NET Core-Web-API mit der Microsoft-Identitätsplattform
- Konfigurieren von ASP.NET Core zur Verwendung mit Proxyservern und Lastenausgleich: Umfasst Hinweise zu:
- der Verwendung der Middleware für weitergeleitete Header, um HTTPS-Schemainformationen für Proxyserver und interne Netzwerke zu schützen
- zusätzlichen Szenarios und Anwendungsfällen, einschließlich der manuellen Schemakonfiguration, Änderungen von Anforderungspfaden für fehlerfreies Routing von Anforderungen und der Weiterleitung des Anforderungsschemas für Linux- und Nicht-IIS-Reverseproxys.
ASP.NET Core