Uwierzytelnianie w aplikacjach zestawu WebAssembly
Zaktualizowaliśmy obsługę uwierzytelniania w aplikacjach zestawu WebAssembly platformy Blazor, aby polegać na stanie historii zamiast ciągów zapytania w adresie URL. W związku z tym istniejące aplikacje, które przekazują zwracany adres URL za pośrednictwem ciągu zapytania, nie będą przekierowywać z powrotem do oryginalnej strony po pomyślnym zalogowaniu.
Istniejące aplikacje powinny używać nowej NavigateToLogin metody rozszerzenia, ponieważ może prawidłowo przepływać dane do strony logowania.
Wprowadzona wersja
.NET 7
Poprzednie zachowanie
Zwracany adres URL został określony w ciągu zapytania jako ?returnUrl=<<return-url>>
.
Nowe zachowanie
Począwszy od platformy .NET 7, zwracany adres URL i inne parametry przekazywane do authentication/login
strony są przekazywane za pośrednictwem history.state
wpisu strony.
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność binarną.
Przyczyna wprowadzenia zmiany
Postanowiliśmy przełączyć się na użycie history.state
zamiast ciągu zapytania, ponieważ upraszcza implementację i usuwa obszar ataków powierzchniowych skojarzony z przekazywaniem danych przez ciąg zapytania.
Zalecana akcja
Większość aplikacji ma plik RedirectToLogin.razor , który można zaktualizować w następujący sposób:
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@using Microsoft.Extensions.Options
@inject IOptionsSnapshot<RemoteAuthenticationOptions<ApiAuthorizationProviderOptions>> Options
@code {
protected override void OnInitialized()
{
Navigation.NavigateToLogin(Options.Get(Microsoft.Extensions.Options.Options.DefaultName).AuthenticationPaths.LogInPath);
}
}
Dotyczy interfejsów API
- Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutSessionStateManager (przestarzałe na rzecz nowej NavigationManagerExtensions.NavigateToLogout metody)