Nest backend выпускает jwt token, который затем используется в fetch запросах на стороне nextjs сервера (не клиента) в bearer header. Причина по которой мне нужна аутентификация от nest а не от nextjs (nextauth) заключается в том, что мне нужен socket io сервер, причем с авторизацией. К сожалению, чтобы установить подключение к socket io серверу, мне нужно получить токен на клиенте. Лучшая практика хранения токена в браузере предполагает хранить http only secure cookie, доступ к которой на клиенте невозможно получить. Тогда у меня вопрос: а как построить систему так, чтобы получить желаемый результат?
Мои попытки полазить в open source nextauth привели к следующему:
nextauth предоставляет useSession хук на клиенте, который использует React.Context, который в свою очередь получает данные о сессии через fetch запрос на api point nextjs сервера. Я не уверен, хорошая ли это идея, например, сделать свой api point на nest который будет предоставлять jwt?
Так же я нашел такой способ:
прочитать куку на сервере nextjs, и пробросить ее через пропсы в клиентский компонент. Я тоже не уверен в этом способе, ведь получается теперь токен может прочитать внешний скрипт и тогда нет толку хранить токен в http only cookie?
Может быть вы знаете другие способы решения такой проблемы в проде?
Константин Б., вы имеете в виду делать fetch запрос на бэк сервер и получить ответ в виде токена на клиенте, который затем использовать для авторизации сокета?
Мне кажется что это не совсем безопасно, правда обьяснить свое опасение не могу, поэтому спрашиваю совета