Я хотел бы понять, как можно настроить JWT аутентификацию для серверных приложений Blazor?
Приведу пример. Допустим, у нас есть проект веб-API .NET Core 3.1. В проекте есть собственная TokenController
реализация, которая выдает JWT за действительную комбинацию пользователя и пароля. Все остальные контроллеры требуют такой токен для каждого запроса.
ПО промежуточного слоя для проверки аутентификации настроено следующим образом:
// enabling JWT bearer scheme
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
// TOKEN VALIDATION PARAMETERS
};
});
// applying default authentication policy
services.AddMvc(o =>
{
o.EnableEndpointRouting = false;
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
o.Filters.Add(new AuthorizeFilter(policy));
}).SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
До сих пор это работает отлично.
Теперь я хотел бы добавить в этот проект красивый пользовательский интерфейс на стороне сервера Blazor, и я просто не могу понять, как тогда выполнить аутентификацию?
Согласно Microsoft Docs, аутентификация для серверных приложений должна происходить при установлении соединения SignalR:
Аутентификация сервера Blazor
Приложения Blazor Server работают через соединение в реальном времени, созданное с помощью SignalR. Аутентификация в приложениях на основе SignalR обрабатывается при установке соединения. Аутентификация может быть основана на файле cookie или другом токене-носителе.
(источник: https://docs.microsoft.com/en-us/aspnet/core/security/blazor/?view=aspnetcore-3.1&tabs=visual-studio)
К сожалению, я не могу понять, как это работает - уроки и советы, которые я нашел, предназначены либо для Client Side Blazor, либо для использования Cookie / Identity ...
Любые идеи?