#c# #signalr #windows-authentication
#c# #signalr #windows-аутентификация
Вопрос:
Мне нужно использовать проверку подлинности Windows для концентратора, но поскольку я работаю в более крупной системе, я могу получить доступ к конвейеру SignalR только через GlobalHost.
Я пытался использовать AuthorizedAttribute
, но это не устанавливает идентификатор, поскольку не зарегистрирован модуль авторизации.
Я пробовал настраивать GlobalHost.HubPipeline.RequireAuthentication();
Это устанавливает идентификатор, но поскольку он устанавливает авторизацию глобально, другие концентраторы не могут подключаться.
Наконец, я попытался добавить пользовательский модуль авторизации, который должен применяться только к одному нужному мне концентратору. Но как только я делаю исключение для одного концентратора, идентификатор снова не устанавливается, и я получаю неавторизованный ответ от авторизованного концентратора.
Ответ №1:
Обычно я помещаю атрибут аутентификации поверх своего класса hub.
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class myChat : Hub
{
}
это проверка подлинности на основе токенов, и вам необходимо настроить отправку токена аутентификации с клиента.
https://learn.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1