Проблема Spring Boot OAuth2 CORS с GitHub Single SignOn с угловым интерфейсом - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть пример приложения весенней загрузки, работающего на порту 8080, API которого защищены интерфейсом OAuth2, который должен быть авторизован GitHub. Я пытаюсь вызвать эти API из примера приложения Angular 6, работающего на порте 4200 с токеном-носителем, включенным в заголовок запроса.

Для серверной части я добавил пользовательский фильтр с наивысшим приоритетом, который отвечает кодом состояния 200 OK для всех запросов параметров HTTP, так что CORS включен для конечных точек безопасности Spring.

Когда я вызываю API с действующим токеном авторизации из моего углового приложения, я получаю следующую ошибку. Пожалуйста, найдите скриншот Заголовки ответа Заголовки запроса

Как правило, вызовы API перенаправляются на сервер авторизации для проверки подлинности, если источник Angular не включен в белый список.

Мне удалось справиться с этой ошибкой, запустив мое угловое приложение в качестве прокси-сервера на моем бэкэнд-сервере с помощью --proxy-config на моем сервере webpack dev.

Моя проблема: в работе мое угловое приложение развернуто на Cloud Foundry, где приложение работает на ngInx. Есть ли способ взломать угловое приложение в качестве прокси-сервера на ngInx. Я в основном предпочитаю иметь конфигурацию на уровне приложения, так как было бы трудно получить root-доступ для изменения файла ngInx.config. Или есть ли лучший способ сделать это? Я предпочитаю, чтобы интерфейс и бэкэнд размещались как отдельные компоненты.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Я изменил мое весеннее загрузочное приложение с того, чтобы быть клиентом oAuth, чтобы быть сервером ресурсов, то есть изменил @ EnableOauth2Sso аннотацию с @ EnableResourceServer и преобразовал мое угловое приложение в клиент oAuth и поговорите с сервером авторизации, чтобы получить токен доступа и получить доступ к ресурсам.

0 голосов
/ 09 сентября 2018

Для бэкэнда я добавил пользовательский фильтр с наивысшим приоритетом который отвечает кодом состояния 200 OK для всех параметров HTTP запрашивает, чтобы CORS был включен для конечных точек безопасности Spring.

Нет, код ответа на опции - это только одна часть истории. Все, что имеет значение, является причиной, почему CORS происходит в первую очередь. Скорее всего, браузеры спрашивают, нормально ли отправлять X, Y, Z ... заголовки или делать A, B, C ... запросы из SOMEWYHERE, и ответы на эти вопросы должны быть включены в опцию ответа, чтобы сообщить браузеру, что это нормально делать что он собирается делать Использование внутреннего прокси-сервера - это просто HACK, который следует использовать в качестве крайней меры.

Тщательно проверяйте ошибки браузера, так как в нем будут указаны причины сбоя предварительной проверки (например, заголовок не разрешен, происхождение не разрешено и т. Д.).

В вашем случае это access-control-allow-origin заголовок отсутствует в ответе перед полетом, так что вкратце - нет, у вас не включен CORS в вашем Spring API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...