Подтвердить что ты не робот

Проверка подлинности JWT в SignalR (.NET Core) без передачи токена в строке запроса

Я использую токены проверки подлинности JWT в приложении ASP.NET Core Web API. Токены генерируются самим API, а не третьей стороной. Я успешно добавил SignalR в стек, но теперь мне нужно проверить подлинность пользователей, которые пытаются выполнить серверные (Hub) методы. Кто-то предложил передать токен в свойстве "qs" в JavaScript. Это будет не работать для меня, так как наши токены действительно большие (они содержат много претензий). Я попытался написать специальное промежуточное программное обеспечение для чтения токена из полезной нагрузки и автоматической аутентификации пользователя. Проблема в том, что при использовании WebSockets промежуточное ПО не выполняется. Любые идеи помогут.

4b9b3361

Ответ 1

Посмотрите на статью, в которой предлагается использовать строку запроса Проверить подлинность приложения ASP.NET Core 1.0 (vNext) SignalR с использованием JWT. Я знаю, что ваш токен слишком длинный, но автор объясняет, как использовать промежуточное программное обеспечение для аутентификации запроса.

Вот резюме из статьи:

  • SignalR не имеет встроенного специального механизма аутентификации, он использует стандартную аутентификацию ASP.NET.
  • JWT обычно отправляется в заголовке авторизации запроса
  • Клиентская библиотека SignalR JavaScript не включает средства отправки заголовков в запросах, однако она позволяет передавать строку запроса
  • Если мы передадим токен в строке запроса, мы можем написать промежуточное программное обеспечение, которое добавляет заголовок авторизации с токеном в качестве значения. Это должно быть сделано до промежуточного программного обеспечения Jwt в конвейере
  • Имейте в виду формат "Носитель"

Я выделил ключевой момент, когда ваше промежуточное программное обеспечение должно быть зарегистрировано до промежуточного программного обеспечения Jwt.