Node.js / Реагируйте на разработку с приложением Spring Boot, защищенным OAuth2 - PullRequest
0 голосов
/ 20 мая 2019

В настоящее время у меня есть веб-приложение Spring Boot, доступ к которому контролируется с помощью службы аутентификации Google.Тип конфигурации, который я использую, - WebSecurityConfigurerAdapter с @ EnableOAuth2Sso.

Если ресурс запрашивается у неаутентифицированного клиента, Spring перенаправляет клиента на вход в Google.Это прекрасно работает.

Проблема в том, что сейчас я пытаюсь разработать шрифт React.Во время разработки я хочу использовать возможности разработки Node.js / React.Это означает, что внешний интерфейс обслуживается на другом сервере (localhost: 3000), чем мой внутренний сервер Spring Boot (localhost: 80).

Первая проблема была заблокирована из-за ограничений между источникамиотносящиеся к приложению Spring Boot.Наконец-то все прошло.

Следующая проблема - аутентификация.Сначала я подумал, что если я впервые захожу в приложение Spring Boot (на localhost: 80) и аутентифицирую себя, то повторные вызовы из моего приложения React (обслуживаемого на localhost: 3000) в мое приложение Spring Boot будут уже аутентифицированы, посколькув том же браузере, в котором я только что аутентифицировался.

Однако я получаю новую ошибку CORS от Google.Похоже, что метод REST Spring Boot, вызываемый моим клиентом React, не видит его аутентифицированным и пытается перенаправить его на сервис аутентификации Google.

Доступ к XMLHttpRequest по адресу https://accounts.google.com/o/oauth2/auth?client_id=xxxx&redirect_uri=http://localhost/login&response_type=code&scope=email%20profile&state=UtOpCH'(перенаправлено из 'http://localhost/initialize') из источника' null 'было заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '.

IЯ в растерянности из-за того, что делать. В идеале, я мог бы просто обойти аутентификацию Google и программно настроить пользователя только на время разработки. Но я не могу понять это тоже.

Ничего из этогопроблема в работе, когда и сервер, и серверная часть обслуживаются с одного и того же сервера. Это проблема только для разработчиков.

Может кто-нибудь подсказать, как с этим справиться?времени, пытаясь описать эту ситуацию. Надеюсь, это имеет смысл.

...