У меня есть базовый c ASP. NET Сервер Core 3.0 SignalR с клиентом Blazor WebAssembly, я пытаюсь настроить аутентификацию, и я столкнулся с проблемой - токеном, который я отправил от клиента похоже, что он не попадает на сервер, вот код, который я использовал для отправки токена (стандартное консольное приложение для тестирования, но код тот же на клиенте).
_hubConnection = new HubConnectionBuilder()
.WithUrl("https://localhost:5001/chat", options =>
{
options.AccessTokenProvider = () => Task.FromResult("TotallySecureToken");
})
.Build();
И это моя установка на другой стороне
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Events = new JwtBearerEvents
{
OnMessageReceived = context =>
{
var accessToken = context.Request.Query["access_token"];
//accessToken is just {} when I check the debugger
Console.WriteLine(accessToken);
if (accessToken == "TotallySecureToken")
{
context.Token = accessToken;
}
return Task.CompletedTask;
}
};
});
services.AddCors();
services.AddSignalR();
}
Эта установка, которую я взял из документации Microsoft, и никаких дополнительных настроек там не происходит, вот ссылка на эту документацию. Вот мой конфиг
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<Chat>("/chat");
});
}
Я подозреваю, что это как-то связано с CORS, но я пробовал несколько установок, и ни одна из них, похоже, не дает никакого эффекта, токен пуст каждый раз. Есть предложения?