Токен носителя SignalR ASP.Net Core при согласовании

Из чтения документов Microsoft при аутентификации с помощью SignalR похоже, что единственный способ аутентификации с использованием токена-носителя - это отправить его в строке запроса в соединении WebSocket.

После проверки рукопожатия SignalR похоже, что заголовок авторизации включен в вызов Negotiate. Поскольку идентификатор соединения возвращается в ответе согласования, сервер может отслеживать, аутентифицирован ли этот идентификатор соединения.

Почему необходимо также добавить токен-носитель в строку запроса подключения к Websocket?


person logix    schedule 27.02.2020    source источник


Ответы (1)


Похоже, это ключ к разгадке вашего вопроса.

При использовании WebSockets или событий, отправленных сервером, клиент браузера отправляет токен доступа в строке запроса. Получение токена доступа через строку запроса обычно безопасно, как и использование стандартного заголовка авторизации. Всегда используйте HTTPS, чтобы обеспечить безопасное сквозное соединение между клиентом и сервером.

Вопросы безопасности в ASP.NET Core SignalR

Это альтернатива:

SignalR можно использовать с проверкой подлинности ASP.NET Core, чтобы связать пользователя с каждым подключением. В концентраторе данные аутентификации можно получить из свойства HubConnectionContext.User. Аутентификация позволяет концентратору вызывать методы для всех подключений, связанных с пользователем. Дополнительные сведения см. В разделе Управление пользователями и группами в SignalR. С одним пользователем могут быть связаны несколько подключений.

Аутентифицировать пользователей, подключающихся к SignalR центр

Дополнительно: однако, я думаю, вы также можете попробовать инъекции как для сервера, так и для клиента. На сервере, например. используйте помощник websocket и на клиенте, например. используйте Promise vs XMLHttpRequest.

person OO7    schedule 27.02.2020
comment
Это все еще не объясняет, почему необходимо добавлять токен в строку запроса, если сервер уже может отслеживать его по согласованному идентификатору соединения. - person logix; 28.02.2020
comment
Подобно sessionid, но в другой реализации бессессионного ситуационного подхода. - person OO7; 04.03.2020