WebAssembly アプリでの認証

Blazor WebAssembly アプリでの認証のサポートが更新され、URL のクエリ文字列ではなく履歴状態に依存するようになりました。 その結果、クエリ文字列を介して戻り先 URL を渡す既存のアプリケーションでは、ログインの成功後に元のページにリダイレクトできません。

既存のアプリケーションでは、新しい NavigateToLogin 拡張メソッドを使用する必要があります。これはログイン ページにデータを正しくフローできるためです。

導入されたバージョン

.NET 7

以前の動作

戻り先 URL は、クエリ文字列で ?returnUrl=<<return-url>> のように指定されていました。

新しい動作

.NET 7 以降では、authentication/login ページに渡される戻り先 URL とその他のパラメーターは、ページの history.state エントリを介して渡されます。

破壊的変更の種類

この変更は、バイナリの互換性に影響を与える可能性があります。

変更理由

私たちはクエリ文字列ではなく history.state の使用に切り替えることにしました。その方が実装が簡単になり、クエリ文字列を介してデータを渡すことに関連した攻撃面の領域を除外できるためです。

ほとんどのアプリにある RedirectToLogin.razor ファイルを、次のように更新できます。

@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

関連項目