Authentification dans les applications WebAssembly

Nous avons mis à jour la prise en charge de l’authentification dans les applications Blazor WebAssembly de façon à ce qu’elle s’appuie sur l’état de l’historique au lieu des chaînes de requête dans l’URL. Par conséquent, les applications existantes qui passent l’URL de retour via la chaîne de requête ne parviennent pas à rediriger vers la page d’origine après une connexion réussie.

Les applications existantes doivent utiliser la nouvelle méthode d’extension NavigateToLogin, car celle-ci est en mesure de transmettre correctement les données à la page de connexion.

Version introduite

.NET 7

Comportement précédent

L’URL de retour était spécifiée dans la chaîne de requête en tant que ?returnUrl=<<return-url>>.

Nouveau comportement

À compter de .NET 7, l’URL de retour et d’autres paramètres transmis à la page authentication/login sont transmis via l’entrée history.state de la page.

Type de changement cassant

Ce changement peut affecter la compatibilité binaire.

Raison du changement

Nous avons décidé de passer à l’utilisation de history.state au lieu de la chaîne de requête, car cela simplifie l’implémentation et supprime la zone d’attaque de surface associée à la transmission de données via la chaîne de requête.

La plupart des applications ont un fichier RedirectToLogin.razor que vous pouvez mettre à jour comme suit :

@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 affectées

Voir aussi