С помощью простого бэкэнда (например, Spring) и SPA front и провайдера аутентификации OAuth2, как правильно внедрить авторизацию на основе сеансов http?
Под термином «правильный» я подразумеваю способ выдать себя за пользователя за сервер для получения cookie-файла сеанса.
К сожалению, вокруг JWT - «масштабируемый, спокойный, без сохранения состояния». Но мое приложение будет использоваться очень немногими пользователями, и оно просто требует старой доброй безопасности, которая обеспечивается http-сессиями из коробки. Текущее «предложенное» решением Okta вызывает проверку каждого запроса API, поэтому каждый вызов имеет значительные накладные расходы, что приводит к небрежной производительности.
Предположим, что у нас есть приложение SPA, выставленное на myapp.com, а его бэкэнд - на прокси через myapp.com/api.
.
Я думаю о реализации этого сценария:
- пользователь посещает SPA (Angular, React, что угодно)
- SPA вызывает backend для деталей пользователя, 403
- SPA перенаправляет на oauth провайдера, например. Okta
- пользователь входит в систему oauth провайдера
- oauth-провайдер предоставляет токен на предъявителя и перенаправляет обратно в SPA
- SPA вызывает backend для сведений о пользователе, но с носителем сейчас
- Spring получает предоставленный токен oauth2, проверяет это в провайдере oauth, создает сеанс http и предоставляет файл cookie сеанса (JSESSIONID)
- SPA-вызовы на сервер автоматически заполняются cookie (мы говорим с прокси, так что это тот же домен)
или, может быть:
- пользователь посещает SPA (Angular, React, что угодно)
- SPA вызывает backend для сведений о пользователе, 403, поэтому backend перенаправляет к oauth провайдеру, например. Okta
- пользователь входит в систему oauth провайдера
- oauth перенаправляет обратно на сервер с токеном oauth2
- Spring получает предоставленный токен oauth2, проверяет его в поставщике oauth, создает сеанс http и предоставляет файл cookie сеанса (JSESSIONID) и перенаправляет в SPA
- SPA вызывает backend для пользовательских данных (автоматически заполняется cookie), 200
Существует ли готовая конфигурация? Похоже, что оба сценария требуют много работы и настройки на стороне безопасности весны. К сожалению, трудно найти какие-либо ресурсы, связанные с файлами cookie сеанса http, в сочетании с поставщиками SPA и oauth2.
А может я что-то упустил?