У меня есть интерфейс (SPA, angular2, lite-server) и скрытый бэкэнд (не доступный для публики, то есть localhost: 8080, весенняя загрузка + весенняя безопасность), интерфейс может получить доступ к бэкэнду, проксируя frontend/api
вызовы backend/api
под капотом.
В основном, шаги для этого типа потока OAuth2:
- В пользовательском интерфейсе - нажмите URL-адрес сервера авторизации с указанным redirect_uri
- Авторизовать
- Вернитесь к redirect_uri с кодом доступа
- ???
- Сервер обменивает код доступа на токен авторизации и сохраняет его
- Пользователь (прошедший аутентификацию) возвращается на страницу, доступ к которой ему был ограничен.
Я не могу выбрать шаги между 3 и 5. Поскольку мой внутренний сервер невидим, redirect_uri должен быть тем же, что и во внешнем интерфейсе. Я мог бы использовать frontend/api/auth
, который будет проксировать вызов backend/api/auth
, и серверная часть успешно получит разрешение на авторизацию, однако в этом случае пользователь не будет перенаправлен обратно на интерфейс. Итак, должен ли я получить код в javascript и вместо этого выполнить POST для /api/auth
из javascript?
Также я не понимаю, как вернуться к шагу 6 после этого, так как после всех перенаправлений приложение SPA будет перезагружено (сбросив состояние), а redirect_uri - это URL-адрес /api/auth
.