CORS с аутентификацией на предъявителя в Spring Security - PullRequest
0 голосов
/ 06 июня 2018

В моей настройке у меня есть служба за воротами zuul, настроенная с помощью Spring Security;Мой клиент - простой веб-сайт, выполняющий AJAX-запрос к шлюзу.

Я поместил CrossOrigin-Annotation на конечную точку в контроллере сервиса, поэтому выполнение запроса непосредственно к сервисам проходит, указывая запрос нашлюз в настоящее время заканчивается 401 ошибкой в ​​моем OPTIONS-запросе.

Похоже, что запрос с заголовком авторизации не достигает Spring Security, так как этот заголовок сейчас не разрешен.

В настоящее время я расширяю WebSecurityConfigurerAdapter, чтобы разрешить все запросы параметров.

РЕДАКТИРОВАТЬ: Вопрос: Как настроить Spring Security, чтобы не требовать аутентификации для OPTIONS-запросов?

EDIT2: Я создал GIST с соответствующим кодом:

  • Клиент: hello.js, index.html
  • Шлюз: WebSecurityonfig.java, SimpleCORSFilter.java, GatewayApp.java
  • Услуга: ContactController.java

EDIT2: после сбора дополнительной информации о OPTIONS-Preflight и Spring (Security) кажется, что проблема связана с Spring Security.

Мы используем токен-носитель для авторизации клиентов, поэтомубраузер отправляет запрос OPTIONS-Preflight на сервер.Сервер защищен Spring Security, который не находит действительный заголовок авторизации и поэтому возвращает с 401-несанкционированным

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Я знаю, что мой ответ немного не по теме, но я обычно решаю эту проблему, используя http-сервер (например, nginx).Этот сервер является внешним и перенаправляющим запросами на внутреннем или внешнем интерфейсе (поэтому, с точки зрения браузера, все серверы находятся в одном домене).

0 голосов
/ 06 июня 2018

Вы должны указать разрешенный источник в аннотации CrossOrigin.

@CrossOrigin(origins = "http://allowed-domain.com")

Вот вам пример: https://spring.io/blog/2015/06/08/cors-support-in-spring-framework

...