Autenticación en aplicaciones WebAssembly

Hemos actualizado la compatibilidad con la autenticación en aplicaciones WebAssembly de Blazor para que se base en el estado del historial en lugar de en las cadenas de consulta de la dirección URL. Como resultado, las aplicaciones existentes que pasen la dirección URL de retorno a través de la cadena de consulta generarán un error al redirigir de vuelta a la página original después de un inicio de sesión correcto.

Las aplicaciones existentes deben usar el nuevo método de extensión NavigateToLogin, ya que permite que los datos fluyan correctamente a la página de inicio de sesión.

Versión introducida

.NET 7

Comportamiento anterior

La dirección URL de devolución se especificó en la cadena de consulta como ?returnUrl=<<return-url>>.

Comportamiento nuevo

A partir de .NET 7, la dirección URL de devolución y otros parámetros pasados a la página authentication/login se pasan a través de la entrada history.state de la página.

Tipo de cambio importante

Este cambio puede afectar a la compatibilidad binaria.

Motivo del cambio

Decidimos cambiar al uso de history.state en lugar de una cadena de consulta, ya que simplifica la implementación y elimina el área de superficie expuesta a ataques asociada al paso de datos a través de una cadena de consulta.

La mayoría de las aplicaciones tienen un archivo RedirectToLogin.razor que se puede actualizar de la siguiente manera:

@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);
    }
}

API afectadas

Vea también