Zabezpieczanie aplikacji po stronie Blazor serwera ASP.NET Core
Uwaga
Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ważne
Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
W tym artykule wyjaśniono, jak zabezpieczyć aplikacje po stronie Blazor serwera jako aplikacje ASP.NET Core.
Aplikacje po stronie Blazor serwera są konfigurowane pod kątem zabezpieczeń w taki sam sposób jak aplikacje ASP.NET Core. Aby uzyskać więcej informacji, zobacz artykuły w tematach dotyczących zabezpieczeń platformy ASP.NET Core.
Kontekst uwierzytelniania jest ustanawiany tylko po uruchomieniu aplikacji, czyli wtedy, gdy aplikacja najpierw nawiązuje połączenie z protokołem WebSocket. Kontekst uwierzytelniania jest utrzymywany przez cały okres istnienia obwodu. Aplikacje okresowo zmieniają stan uwierzytelniania użytkownika co 30 minut.
Jeśli aplikacja musi przechwytywać użytkowników dla usług niestandardowych lub reagować na aktualizacje użytkownika, zobacz Scenariusze zabezpieczeń po stronie serwera ASP.NET CoreBlazor.
Blazor różni się od tradycyjnych aplikacji internetowych renderowanych przez serwer, które tworzą nowe żądania HTTP z plikami cookie w każdej nawigacji na stronie. Uwierzytelnianie jest sprawdzane podczas zdarzeń nawigacji. Pliki cookie nie są jednak zaangażowane. Pliki cookie są wysyłane tylko podczas wysyłania żądania HTTP do serwera, co nie jest wykonywane po przejściu Blazor użytkownika w aplikacji. Podczas nawigacji stan uwierzytelniania użytkownika jest sprawdzany w obwodzie Blazor , który można zaktualizować w dowolnym momencie na serwerze przy użyciu ponownego sprawdzania AuthenticationStateProvider
](#additional-authentication-state-providers).
Ważne
Implementowanie niestandardowego NavigationManager
elementu w celu uzyskania weryfikacji uwierzytelniania podczas nawigacji nie jest zalecane. Jeśli aplikacja musi wykonywać niestandardową logikę stanu uwierzytelniania podczas nawigacji, użyj niestandardowego AuthenticationStateProvider
elementu .
Uwaga
Przykłady kodu w tym artykule przyjmują typy odwołań dopuszczających wartość null (NRTs) i statyczną analizę stanu null kompilatora platformy .NET, które są obsługiwane w programie ASP.NET Core na platformie .NET 6 lub nowszym. W przypadku określania wartości docelowej ASP.NET Core 5.0 lub starszej usuń oznaczenie typu null (?
) z przykładów w tym artykule.
Zabezpieczenia po stronie serwera poufnych danych i poświadczeń
W środowiskach testowych/przejściowych i produkcyjnych kod po stronie Blazor serwera i internetowe interfejsy API powinny używać bezpiecznych przepływów uwierzytelniania, które unikają utrzymywania poświadczeń w kodzie projektu lub plikach konfiguracji. Poza lokalnymi testami programistycznymi zalecamy unikanie używania zmiennych środowiskowych do przechowywania poufnych danych, ponieważ zmienne środowiskowe nie są najbezpieczniejszym podejściem. W przypadku lokalnego testowania programistycznego narzędzie Secret Manager jest zalecane do zabezpieczania poufnych danych. Aby uzyskać więcej informacji, zobacz następujące zasoby:
- Bezpieczne przepływy uwierzytelniania (dokumentacja ASP.NET Core)
- Tożsamości zarządzane dla usług platformy Microsoft Azure (Blazor dokumentacja)
W przypadku programowania i testowania lokalnego po stronie klienta i po stronie serwera użyj narzędzia Secret Manager, aby zabezpieczyć poufne poświadczenia.
Szablon projektu
Utwórz nową aplikację po stronie Blazor serwera, postępując zgodnie ze wskazówkami w temacie Tooling for ASP.NET Core Blazor.
Po wybraniu szablonu aplikacji po stronie serwera i skonfigurowaniu projektu wybierz uwierzytelnianie aplikacji w obszarze Typ uwierzytelniania:
- Brak (wartość domyślna): brak uwierzytelniania.
- Indywidualne konta: konta użytkowników są przechowywane w aplikacji przy użyciu ASP.NET Core Identity.
- Brak (wartość domyślna): brak uwierzytelniania.
- Indywidualne konta: konta użytkowników są przechowywane w aplikacji przy użyciu ASP.NET Core Identity.
- Platforma Firmy Microsoftidentity: aby uzyskać więcej informacji, zobacz ASP.NET Core authentication and authorization (Uwierzytelnianie i autoryzacja podstawoweBlazor).
- Windows: użyj uwierzytelniania systemu Windows.
BlazorIdentity Interfejs użytkownika (indywidualne konta)
Blazorprogram obsługuje generowanie pełnego BlazorIdentity interfejsu użytkownika podczas wybierania opcji uwierzytelniania dla indywidualnych kont.
Kod Blazor Web App szkieletu Identity szablonu dla bazy danych programu SQL Server. Wersja wiersza polecenia używa biblioteki SQLite i zawiera bazę danych SQLite dla programu Identity.
Szablon:
- Obsługuje interaktywne renderowanie po stronie serwera (interakcyjne SSR) i scenariusze renderowania po stronie klienta (CSR) z uwierzytelnionymi użytkownikami.
- Dodaje IdentityRazor składniki i powiązaną logikę dla rutynowych zadań uwierzytelniania, takich jak logowanie użytkowników i ich out. Składniki Identity obsługują również zaawansowane Identity funkcje, takie jak potwierdzenie konta i odzyskiwanie hasła oraz uwierzytelnianie wieloskładnikowe przy użyciu aplikacji innej firmy. Należy pamiętać, że Identity same składniki nie obsługują interakcyjności.
- IdentityDodaje powiązane pakiety i zależności.
- Odwołuje się do Identity pakietów w pliku
_Imports.razor
. - Tworzy niestandardową klasę użytkownika Identity (
ApplicationUser
). - Tworzy i rejestruje EF Core kontekst bazy danych (
ApplicationDbContext
). - Konfiguruje routing dla wbudowanych Identity punktów końcowych.
- Obejmuje Identity walidację i logikę biznesową.
Aby sprawdzić Blazor składniki platformyIdentity, uzyskaj dostęp do nich w Pages
folderachAccount
i Shared
w szablonie Blazor Web App projektu (źródle odwołania).
Po wybraniu trybów renderowania Interactive WebAssembly lub Interactive Auto serwer obsługuje wszystkie żądania uwierzytelniania i autoryzacji, a Identity składniki są renderowane statycznie na serwerze w Blazor Web Appgłównym projekcie programu .
Platforma udostępnia niestandardowe AuthenticationStateProvider zarówno w projektach serwera, jak i klienta (.Client
) w celu przepływu stanu uwierzytelniania użytkownika do przeglądarki. Projekt serwera wywołuje metodę AddAuthenticationStateSerialization
, podczas gdy projekt klienta wywołuje metodę AddAuthenticationStateDeserialization
. Uwierzytelnianie na serwerze zamiast klienta umożliwia aplikacji dostęp do stanu uwierzytelniania podczas prerenderingu i przed zainicjowanym środowiskiem uruchomieniowym zestawu WebAssembly platformy .NET. Implementacje niestandardowe AuthenticationStateProvider używają usługi stanu trwałego składnika (PersistentComponentState) do serializacji stanu uwierzytelniania w komentarzach HTML, a następnie odczytują go z powrotem z zestawu WebAssembly w celu utworzenia nowego AuthenticationState wystąpienia. Aby uzyskać więcej informacji, zobacz sekcję Zarządzanie stanem uwierzytelniania w Blazor Web Appsekcji s .
Tylko w przypadku rozwiązań interactive Server (źródło referencyjne) jest po stronie AuthenticationStateProvider serwera, IdentityRevalidatingAuthenticationStateProvider
która rewalyduje sygnaturę zabezpieczeń dla połączonego użytkownika co 30 minut połączony obwód interaktywny.
Po wybraniu trybów renderowania Interactive WebAssembly lub Interactive Auto serwer obsługuje wszystkie żądania uwierzytelniania i autoryzacji, a Identity składniki są renderowane statycznie na serwerze w Blazor Web Appgłównym projekcie programu . Szablon projektu zawiera klasę PersistentAuthenticationStateProvider
(źródło odwołania) w .Client
projekcie w celu zsynchronizowania stanu uwierzytelniania użytkownika między serwerem a przeglądarką. Klasa jest niestandardową implementacją klasy AuthenticationStateProvider. Dostawca używa usługi stanu trwałego składnika () doPersistentComponentState wstępnego podsuwania stanu uwierzytelniania i utrwalania go na stronie.
W głównym projekcie Blazor Web Appdostawcy stanu uwierzytelniania nosi nazwę IdentityRevalidatingAuthenticationStateProvider
(źródło referencyjne) (tylko rozwiązania interakcyjne serwera) lub PersistingRevalidatingAuthenticationStateProvider
(źródło referencyjne) (WebAssembly lub Auto interactivity solutions).
BlazorIdentity zależy DbContext od wystąpień, które nie są tworzone przez fabrykę, co jest zamierzone, ponieważ DbContext jest wystarczające, aby składniki szablonu Identity projektu były renderowane statycznie bez obsługi interakcyjności.
Aby zapoznać się z opisem sposobu stosowania globalnych trybów renderowania interakcyjnego do składników innychIdentity niż składniki, a jednocześnie wymuszania statycznego przewodnika SSR dla Identity składników, zobacz ASP.NET Tryby renderowania PodstawoweBlazor.
Aby uzyskać więcej informacji na temat utrwalania stanu wstępnego, zobacz Prerender ASP.NET Core components (Składniki prerender ASP.NET CoreRazor).
Aby uzyskać więcej informacji na temat interfejsu BlazorIdentity użytkownika i wskazówek dotyczących integrowania identyfikatorów logowania zewnętrznego za pośrednictwem witryn społecznościowych, zobacz Co nowego w identity programie .NET 8.
Uwaga
Linki dokumentacji do źródła referencyjnego platformy .NET zwykle ładują domyślną gałąź repozytorium, która odzwierciedla bieżące programowanie dla następnej wersji platformy .NET. Aby wybrać tag dla określonej wersji, użyj listy rozwijanej Przełącz gałęzie lub tagi. Aby uzyskać więcej informacji, zobacz Jak wybrać tag wersji kodu źródłowego platformy ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Zarządzanie stanem uwierzytelniania w s Blazor Web App
Ta sekcja ma zastosowanie do Blazor Web Apptych, które przyjmują:
- Indywidualne konta
- Renderowanie po stronie klienta (CSR, interakcyjność oparta na zestawie WebAssembly).
Dostawca stanu uwierzytelniania po stronie klienta jest używany tylko w ramach Blazor programu i nie jest zintegrowany z systemem uwierzytelniania ASP.NET Core. Podczas prerenderingu Blazor uwzględnia metadane zdefiniowane na stronie i używa systemu uwierzytelniania ASP.NET Core w celu określenia, czy użytkownik jest uwierzytelniony. Gdy użytkownik przechodzi z jednej strony do innej, jest używany dostawca uwierzytelniania po stronie klienta. Gdy użytkownik odświeży stronę (załaduj ponownie pełną stronę), dostawca stanu uwierzytelniania po stronie klienta nie jest zaangażowany w decyzję uwierzytelniania na serwerze. Ponieważ stan użytkownika nie jest utrwalany przez serwer, każdy stan uwierzytelniania utrzymywany po stronie klienta zostanie utracony.
Aby rozwiązać ten problem, najlepszym rozwiązaniem jest przeprowadzenie uwierzytelniania w systemie uwierzytelniania ASP.NET Core. Dostawca stanu uwierzytelniania po stronie klienta zajmuje się tylko odzwierciedleniem stanu uwierzytelniania użytkownika. Przykłady tego, jak to zrobić za pomocą dostawców stanu uwierzytelniania, są przedstawiane przez Blazor Web App szablon projektu i opisane poniżej.
W pliku projektu Program
serwera wywołaj metodę AddAuthenticationStateSerialization
, która serializuje AuthenticationState zwrócone przez serwer po stronie AuthenticationStateProvider serwera przy użyciu usługi stan składnika trwałego (PersistentComponentState):
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents()
.AddAuthenticationStateSerialization();
Interfejs API serializuje tylko nazwę po stronie serwera i oświadczenia roli w celu uzyskania dostępu w przeglądarce. Aby uwzględnić wszystkie oświadczenia, ustaw wartość SerializeAllClaims
na true
w wywołaniu po stronie serwera na wartość AddAuthenticationStateSerialization
:
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents()
.AddAuthenticationStateSerialization(
options => options.SerializeAllClaims = true);
W pliku projektu klienta (.Client
) wywołaj metodę AddAuthenticationStateDeserialization
, która dodaje lokalizację AuthenticationStateProvider AuthenticationState deserializacji z serwera przy użyciu i AuthenticationStateData
trwałej usługi stanu składnika (PersistentComponentState).Program
W projekcie serwera powinno istnieć AddAuthenticationStateSerialization
odpowiednie wywołanie.
builder.Services.AddAuthorizationCore();
builder.Services.AddCascadingAuthenticationState();
builder.Services.AddAuthenticationStateDeserialization();
PersistingRevalidatingAuthenticationStateProvider
(źródło referencyjne): w przypadku Blazor Web Appusług, które przyjmują interaktywne renderowanie po stronie serwera (interakcyjne SSR) i renderowanie po stronie klienta (CSR). Jest to strona AuthenticationStateProvider serwera, która rewalyzuje sygnaturę zabezpieczeń dla połączonego użytkownika co 30 minut połączony obwód interakcyjny. Używa ona również usługi Stanu składnika trwałego do przepływu stanu uwierzytelniania do klienta, który jest następnie stały przez okres istnienia żądania CSR.PersistingServerAuthenticationStateProvider
(źródło referencyjne): w przypadku Blazor Web Apps, które przyjmują tylko csr. Jest to strona AuthenticationStateProvider serwera, która używa usługi stanu składnika trwałego do przepływu stanu uwierzytelniania do klienta, który jest następnie stały przez okres istnienia csr.PersistentAuthenticationStateProvider
(źródło referencyjne): w przypadku Blazor Web Appelementów, które przyjmują csr. Jest to po stronie AuthenticationStateProvider klienta, która określa stan uwierzytelniania użytkownika, wyszukując dane utrwalone na stronie podczas renderowania na serwerze. Ten stan uwierzytelniania jest stały dla okresu istnienia csr. Jeśli użytkownik musi się zalogować lub wylogować, wymagane jest ponowne załadowanie pełnej strony. Zapewnia to tylko nazwę użytkownika i adres e-mail do celów wyświetlania. Nie obejmuje tokenów uwierzytelniających się na serwerze podczas podejmowania kolejnych żądań, które są obsługiwane oddzielnie przy użyciu elementu cookie uwzględnionego wHttpClient
żądaniach do serwera.
Uwaga
Linki dokumentacji do źródła referencyjnego platformy .NET zwykle ładują domyślną gałąź repozytorium, która odzwierciedla bieżące programowanie dla następnej wersji platformy .NET. Aby wybrać tag dla określonej wersji, użyj listy rozwijanej Przełącz gałęzie lub tagi. Aby uzyskać więcej informacji, zobacz Jak wybrać tag wersji kodu źródłowego platformy ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Szkielet Identity
Aby uzyskać więcej informacji na temat tworzenia Identity szkieletów w aplikacji po stronie Blazor serwera, zobacz Tworzenie szkieletu Identity w projektach ASP.NET Core.
Identity Tworzenie szkieletu w aplikacji po stronie Blazor serwera:
Dodatkowe oświadczenia i tokeny od dostawców zewnętrznych
Aby przechowywać dodatkowe oświadczenia od dostawców zewnętrznych, zobacz Utrwalanie dodatkowych oświadczeń i tokenów od dostawców zewnętrznych na platformie ASP.NET Core.
Usługa Azure App Service dla systemu Linux z serwerem Identity
Podczas wdrażania w usłudze Azure App Service dla systemu Linux z serwerem Identity jawnie określ wystawcę. Aby uzyskać więcej informacji, zobacz Zabezpieczanie Identity zaplecza internetowego interfejsu API dla spAs.
Wstrzykiwanie AuthenticationStateProvider
dla usług o zakresie do składnika
Nie próbuj rozwiązywać problemów AuthenticationStateProvider w zakresie niestandardowym, ponieważ powoduje utworzenie nowego wystąpienia obiektu AuthenticationStateProvider , które nie zostało poprawnie zainicjowane.
Aby uzyskać dostęp do AuthenticationStateProvider elementu w ramach usługi o zakresie składnika, należy wstrzyknąć AuthenticationStateProvider element z @inject
dyrektywą lub [Inject]
atrybutem i przekazać go do usługi jako parametr. Takie podejście gwarantuje, że poprawne, zainicjowane wystąpienie AuthenticationStateProvider obiektu jest używane dla każdego wystąpienia aplikacji użytkownika.
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.";
}
}
}
Zarejestruj usługę jako zakres. W aplikacji po stronie Blazor serwera zakres usług ma okres istnienia równy czasowi trwania obwodu połączenia klienta.
W pliku Program
:
builder.Services.AddScoped<ExampleService>();
W Startup.ConfigureServices
pliku :Startup.cs
services.AddScoped<ExampleService>();
W poniższym składniku InjectAuthStateProvider
:
- Składnik dziedziczy element OwningComponentBase.
- Element AuthenticationStateProvider jest wstrzykiwany i przekazywany do .
ExampleService.ExampleMethod
ExampleService
jest rozpoznawany za pomocą OwningComponentBase.ScopedServices funkcji i GetRequiredService, która zwraca poprawne, zainicjowane wystąpienieExampleService
, które istnieje przez okres istnienia obwodu użytkownika.
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);
}
}
Aby uzyskać więcej informacji, zobacz wskazówki dotyczące OwningComponentBase iniekcji zależności ASP.NET CoreBlazor.
Wyświetlanie nieautoryzowanej zawartości podczas prerenderingu za pomocą niestandardowego AuthenticationStateProvider
Aby uniknąć wyświetlania nieautoryzowanej zawartości, na przykład zawartości w składnikuAuthorizeView
, podczas prerendering z niestandardowym AuthenticationStateProvider
elementem , należy zastosować jedną z następujących metod:
Zaimplementuj IHostEnvironmentAuthenticationStateProvider obsługę prerenderingu niestandardowegoAuthenticationStateProvider: aby zapoznać się z przykładową implementacją IHostEnvironmentAuthenticationStateProviderprogramu , zobacz Blazor implementację ServerAuthenticationStateProvider platformy w
ServerAuthenticationStateProvider.cs
(źródle referencyjnym).Uwaga
Linki dokumentacji do źródła referencyjnego platformy .NET zwykle ładują domyślną gałąź repozytorium, która odzwierciedla bieżące programowanie dla następnej wersji platformy .NET. Aby wybrać tag dla określonej wersji, użyj listy rozwijanej Przełącz gałęzie lub tagi. Aby uzyskać więcej informacji, zobacz Jak wybrać tag wersji kodu źródłowego platformy ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Wyłącz prerendering: wskazuje tryb renderowania z parametrem
prerender
ustawionym nafalse
najwyższy poziom składnika w hierarchii składników aplikacji, który nie jest składnikiem głównym.Uwaga
Tworzenie składnika głównego interakcyjnego, takiego jak
App
składnik, nie jest obsługiwane. W związku z tym prerendering nie może być wyłączony bezpośrednio przezApp
składnik.W przypadku aplikacji opartych na szablonie Blazor Web App projektu prerendering jest zwykle wyłączony, gdy
Routes
składnik jest używany w składnikuApp
(Components/App.razor
) :<Routes @rendermode="new InteractiveServerRenderMode(prerender: false)" />
Ponadto wyłącz prerendering dla
HeadOutlet
składnika:<HeadOutlet @rendermode="new InteractiveServerRenderMode(prerender: false)" />
Można również selektywnie sterować trybem renderowania zastosowanym
Routes
do wystąpienia składnika. Zobacz na przykład tryby renderowania ASP.NET CoreBlazor.
- Uwierzytelnij użytkownika na serwerze przed rozpoczęciem działania aplikacji: aby zastosować to podejście, aplikacja musi odpowiadać na początkowe żądanie użytkownika przy użyciu strony logowania lub wyświetlania opartego Identityna protokole i uniemożliwić uwierzytelnianie żądań do Blazor punktów końcowych. Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji ASP.NET Core z danymi użytkownika chronionymi przez autoryzację. Po uwierzytelnieniu nieautoryzowana zawartość w prerenderowanych Razor składnikach jest wyświetlana tylko wtedy, gdy użytkownik jest naprawdę nieautoryzowany do wyświetlania zawartości.
Zarządzanie stanem użytkownika
Pomimo słowa "state" w nazwie AuthenticationStateProvider nie jest przeznaczony do przechowywania stanu użytkownika ogólnego. AuthenticationStateProvider Wskazuje tylko stan uwierzytelniania użytkownika w aplikacji, niezależnie od tego, czy są oni zalogowani do aplikacji i którzy są zalogowani jako.
Uwierzytelnianie używa tego samego uwierzytelniania ASP.NET Core Identity co Razor aplikacje Pages i MVC. Stan użytkownika przechowywany dla przepływów ASP.NET Core Identity do Blazor bez dodawania dodatkowego kodu do aplikacji. Postępuj zgodnie ze wskazówkami w artykułach ASP.NET Core Identity i samouczkach dotyczących Identity funkcji, które zostaną zastosowane w Blazor częściach aplikacji.
Aby uzyskać wskazówki dotyczące ogólnego zarządzania stanem poza programem ASP.NET CoreIdentity, zobacz zarządzanie stanem ASP.NET CoreBlazor.
Dodatkowi dostawcy stanu uwierzytelniania
Dwie dodatkowe klasy pochodzące z AuthenticationStateProvider pomocy przy zarządzaniu stanem uwierzytelniania na serwerze:
ServerAuthenticationStateProvider (źródło referencyjne): domyślnie AuthenticationStateProvider używane przez platformę Blazor do zarządzania stanem uwierzytelniania na serwerze, gdy bardziej konkretny dostawca nie jest zarejestrowany.
RevalidatingServerAuthenticationStateProvider (źródło odwołania): klasa bazowa dla AuthenticationStateProvider usług, które otrzymują stan uwierzytelniania ze środowiska hosta i ponownie je w regularnych odstępach czasu. Zobacz szablon projektu, Blazor Web App aby zapoznać się z przykładową implementacją. Zastąpić RevalidationInterval , aby zmienić domyślny interwał 30-minutowej ponownej zmiany.
Uwaga
Linki dokumentacji do źródła referencyjnego platformy .NET zwykle ładują domyślną gałąź repozytorium, która odzwierciedla bieżące programowanie dla następnej wersji platformy .NET. Aby wybrać tag dla określonej wersji, użyj listy rozwijanej Przełącz gałęzie lub tagi. Aby uzyskać więcej informacji, zobacz Jak wybrać tag wersji kodu źródłowego platformy ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Zarządzanie stanem uwierzytelniania przy wylogowywaniu
Po stronie Blazor serwera stan uwierzytelniania użytkownika jest utrwalany przez cały okres istnienia obwodu, w tym na kartach przeglądarki. Aby aktywnie oznaczać użytkownika na kartach przeglądarki, gdy użytkownik wyloguje się na jednej karcie, musisz zaimplementować RevalidatingServerAuthenticationStateProvider (źródło referencyjne) z krótkim RevalidationInterval.
Uwaga
Linki dokumentacji do źródła referencyjnego platformy .NET zwykle ładują domyślną gałąź repozytorium, która odzwierciedla bieżące programowanie dla następnej wersji platformy .NET. Aby wybrać tag dla określonej wersji, użyj listy rozwijanej Przełącz gałęzie lub tagi. Aby uzyskać więcej informacji, zobacz Jak wybrać tag wersji kodu źródłowego platformy ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Czas trwania ważności tymczasowego adresu URL przekierowania
Ta sekcja dotyczy s Blazor Web App.
RazorComponentsServiceOptions.TemporaryRedirectionUrlValidityDuration Użyj opcji , aby uzyskać lub ustawić okres istnienia ważności ASP.NET Core Data Protection dla tymczasowych adresów URL przekierowania emitowanych przez Blazor renderowanie po stronie serwera. Są one używane tylko w sposób przejściowy, więc okres istnienia musi być wystarczająco długi, aby klient odbierał adres URL i rozpoczynał nawigację do niego. Jednak powinno to być również wystarczająco długie, aby umożliwić niesymetryczność zegara na serwerach. Wartość domyślna to pięć minut.
W poniższym przykładzie wartość jest rozszerzona do siedmiu minut:
builder.Services.AddRazorComponents(options =>
options.TemporaryRedirectionUrlValidityDuration =
TimeSpan.FromMinutes(7));
Dodatkowe zasoby
- Szybki start: dodawanie logowania przy użyciu konta Microsoft do aplikacji internetowej platformy ASP.NET Core
- Szybki start: ochrona internetowego interfejsu API identity platformy Microsoft ASP.NET Core
- Konfigurowanie ASP.NET Core do pracy z serwerami proxy i modułami równoważenia obciążenia: zawiera wskazówki dotyczące:
- Używanie oprogramowania pośredniczącego nagłówków przekazywanych w celu zachowania informacji o schemacie HTTPS między serwerami proxy i sieciami wewnętrznymi.
- Dodatkowe scenariusze i przypadki użycia, w tym ręczna konfiguracja schematu, żądanie zmiany ścieżki żądania na potrzeby prawidłowego routingu żądań i przekazywanie schematu żądań dla zwrotnych serwerów proxy systemu Linux i innych niż IIS.