WebSocket. Как пробросить пару логин: пароль не используя тело сообщения вебсокета и url?
Добрый день!
Есть приложение на основе фреймворка Sanic, один из эндпоинтов которого является веб-сокетом (на базе библиотеки WebSockets). Передо мной стоит задача сделать авторизацию на данном веб-сокете, но есть одно (даже два) "но": нельзя использовать для этого url и сообщение из веб-сокета (технически - можно, просто не дозволено)
Какой есть выход из ситуации?
Есть JS-клиенты, которые будут посылать логин: пароль на данный веб-сокет эндпоинт (как - пока неизвестно, будет зависить от того, каким образом я реализую авторизацию), но нужно учесть, чтобы они могли это сделать.
UPD.: Да, в сокет прилетают сообщения, которые дальше пробрасываются в другие микросервисы. Они валидируются по схеме. Я не могу просто так впилить туда пару логин: пароль. Мне сказали найти другое решение (намекнули, что оно очень простое..)
Что можно сделать?
Помогите, пожалуйста, что-то я совсем в тупик зашёл..
Vitsliputsli, Sanic обрабатывает данный веб-сокет как url. Т.е. внешний адрес сокета получается примерно таким: test.example.com/api/chat/someUserID
Вот в данном урле нельзя передавать какие-либо данные кроме юзер айди
thereisnonickname, не очень понимаю все ваши хитросплетения и задачу. Но чтото передать через ws, как и http, можно либо в path, либо в body, либо в header. Если я правильно вас понял, первые 2 варианта под запретом, тогда используйте header.
Vitsliputsli, после вашего коммента погуглил чуть получше и да, действительно, библиотека WebSockets поддерживает хидеры. Сейчас разберусь с тем, как это работает, и, вероятно, проблема решена. Большое вам спасибо! :)
pygame, простите, а где можно прочесть о том, что хидеры в вебсокетах - deprecated?
Вот что написано в RFC 6455:
12. The request MAY include any other header fields, for example,
cookies [RFC6265] and/or authentication-related header fields
such as the |Authorization| header field [RFC2616], which are
processed according to documents that define them.
Я не увидел в RFC информации о том, что обслуживание хидеров устарело. Наоборот, написано, что их применение возможно.
А вот авторизационный хидер, да - устарел: https://stackoverflow.com/questions/4361173/http-h...