Я строю сервер REST и клиент для этого. Теперь мне нужно внедрить стороннюю аутентификацию oauth2. Сейчас я направляю пользователя на сервер, позволяю ему проходить аутентификацию в службе, а затем перенаправляюсь к клиенту, примерно так:Служба REST с третьим лицом OAuth2
Клиент: не аутентифицирован -> Сервер -> Перенаправление на стороннюю сторону -> Перенаправление на сервер -> Перенаправление в приложение.
Затем я храню файл cookie на клиенте для идентификации пользователя (cookie отправляется с использованием Credentials и CORS).
Моя проблема теперь в том, что я должен сделать с повторной аутентификацией, когда истекает срок действия токена? Поскольку клиент и сервер обмениваются данными только через json, мне придется снова инициировать полный процесс аутентификации, и поэтому пользователь потеряет все состояние в приложении. Есть ли у кого-нибудь предложение о том, как обойти эту проблему? Лучше ли выполнять аутентификацию на стороне клиента и хранить токен доступа на сервере или что-то еще?
Правильно, поэтому я думаю, что лучшего решения нет. Получение более длинного токена действительно не устраняет проблему, но делает процесс повторной аутентификации менее частым. Сохранение состояния, конечно, возможно (так как все уже клиентская сторона), но и тяжелая проблема. Я думал, возможно, используя window.open() для потока повторной аутентификации, но он также не является оптимальным. Как насчет iframe? – cpojer
Состояние хранения не так сложно; вы можете хранить информацию о состоянии пользователя в своем приложении. я не пробовал с iframe, но кажется, что стоит попробовать. –
Это зависит от того, о каком состоянии мы говорим. Я имею в виду текущее состояние приложения, вплоть до последнего щелчка пользователя. Это определенно не тривиальная проблема, если приложение достаточно сложное. – cpojer