OAuth2: поток предоставления кода авторизации

У меня есть интерфейс (SPA, angular2, lite-server) и скрытый бэкэнд (не доступный для публики, то есть localhost: 8080, весенняя загрузка + весенняя безопасность), интерфейс может получить доступ к бэкэнду, проксируя frontend/api вызовы backend/api под капотом.

В основном, шаги для этого типа потока OAuth2:

  1. В пользовательском интерфейсе - нажмите URL-адрес сервера авторизации с указанным redirect_uri
  2. Авторизовать
  3. Вернитесь к redirect_uri с кодом доступа
  4. ???
  5. Сервер обменивает код доступа на токен авторизации и сохраняет его
  6. Пользователь (прошедший аутентификацию) возвращается на страницу, доступ к которой ему был ограничен.

Я не могу выбрать шаги между 3 и 5. Поскольку мой внутренний сервер невидим, redirect_uri должен быть тем же, что и во внешнем интерфейсе. Я мог бы использовать frontend/api/auth, который будет проксировать вызов backend/api/auth, и серверная часть успешно получит разрешение на авторизацию, однако в этом случае пользователь не будет перенаправлен обратно на интерфейс. Итак, должен ли я получить код в javascript и вместо этого выполнить POST для /api/auth из javascript?

Также я не понимаю, как вернуться к шагу 6 после этого, так как после всех перенаправлений приложение SPA будет перезагружено (сбросив состояние), а redirect_uri - это URL-адрес /api/auth.


person Vadim Kirilchuk    schedule 02.11.2016    source источник
comment
Как вы это решили?   -  person flyer88    schedule 20.01.2017
comment
Первым делом - переключился на spring-social вместо spring-oauth2, но как только у вас возникла идея, вы можете сделать то же самое с spring-oauth2. Итак, шаги следующие: 0) Либо настройте URL-адрес перенаправления, либо укажите его в качестве параметра для перенаправления на / api / auth / facebook 1) Щелкните значок авторизации - ›/ api / auth / facebook -› backend / auth / facebook 2) запускается серверная часть танец и по завершении переходит к перенаправлению URL-адреса (см. шаг 0) 3) под капотом это будет / api / auth / facebook? authorization_code = blabla 4) Spring позаботится об этом, убедитесь, что вы настроили spring для перенаправления на пользовательский интерфейс после успех (successHandler.setDefaultTargetUrl)   -  person Vadim Kirilchuk    schedule 20.01.2017


Ответы (1)


Если я правильно понял вопрос, проще всего было бы «выставить» сервер через localtunnel или ngrok.

person svetagoldstein    schedule 02.03.2017