Идентификация пользователя при WebSocket подключении через SignalR C#

Рейтинг: 0Ответов: 1Опубликовано: 30.07.2025

Всем привет! Есть такая проблема. Есть сервис, который занимается отправкой real-time уведомлений. Когда пользователь подключается к нему, то подключение идентифицируется по ConnectionId, которое создаётся при подключении. Но только по этому Id невозможно идентифицировать пользователя. В системе используются JWT токены, в которых содержится Id пользователя, но как его передать при WebSocket подключении? Есть вариант передать в query string, но это небезопасно

Ответы

▲ 1

Я не понимаю в чем проблема то: подключаешь вебсокет в handshake, подключился? Пишешь сообщение клиенту типа: { "type": "auth", "token": "blah-blah-blah" }. Сервер проверяет JWT и сохраняет привязку ConnectionId <-> UserId. До получения валидного токена сервер игнорирует или отклоняет остальные сообщения.

Сразу говорю, я незнаю, я может не прав и это не секьюрно, но кажется изи и норм?