2015-05-14 6 views
1

Устранение проблемы: У меня есть несколько полезных API, которые защищены CSRF с использованием весенней безопасности. Кроме того, к этим API-интерфейсам будет доступен от другой источник/домен Angular WEB UI. Мне не нужна Spring Authentication, так как проверка подлинности выполняется Siteminder.Весна безопасности CSRF CORS

подход: Я следовал этой ссылке из от Дейва Syer для защиты CSRF: The Login Page: Angular JS and Spring Security Part II, которая работает отлично, за исключением одного вопроса (ниже).

Issue: Этот код работа прекрасно, когда мой угловой HTML клиент доступа к RESTful API, на тот же происхождение/домен; но когда я пытаюсь получить доступ к тем же API-интерфейсам из другого источника, получив ошибку 403 - Ошибка доступа к запрету - CSRF.

подход То, что я пытался до сих пор, расширив свой пример:

  1. Добавлен CORS фильтр - Enabling Cross Origin Requests for a RESTful Web Service

    response.setHeader("Access-Control-Allow-Origin", "*"); 
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); 
    response.setHeader("Access-Control-Max-Age", "3600"); 
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); 
    

Нет Luck на вышесказанном.

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

Спасибо, Суман

ответ

1

CSRF и CO не то же самое. Вероятно, теперь часть CORS отсортирована, но вам нужно добавить токен CSRF для любых запросов POST/PUT/DELETE. Spring Security отправляет токен в заголовке в серии блога, который вы цитировали, и Angular выбирает его оттуда (вам нужно добавить несколько строк кода, чтобы это работало).

+1

Большое спасибо @Dave Syer! Он работал после добавления нескольких строк углового кода для клиента отсюда: [link] https://github.com/pasupulaphani/angular-csrf-cross-domain. Кроме того, добавлены Access-Control-Allow-Headers: origin, content-type, X-CSRF-TOKEN в фильтр CORS, чтобы сделать доступным из другого источника. Access-Control-Request-Method: POST – Sum

+0

не могли бы вы разместить сообщение о том, что вы добавили в приложение angularjs, чтобы запустить его? Спасибо! – skywalker

+0

См. Здесь код: https://github.com/dsyer/spring-security-angular/blob/master/single/src/main/java/demo/UiApplication.java#L65 –

Смежные вопросы