Я пытаюсь создать страницу с угловым 2 поверх API загрузки Spring. Я настроил CORS (правильно я считаю), но меня блокирует защита CSRF от Spring Security.Угловые 2/Проблемы с безопасностью CSRF безопасности
Это мое понимание, что Angular 2 обрабатывает CSRF автоматически с RC2, и я на RC4. Сервер посылает маркер XSRF в ответ на POST от клиента, как показано здесь:
Я предполагаю, что Угловые 2 не поднять его? Я знаю, что CORS работает, потому что, когда я положил .ignoringAntMatchers («/ urlhere /») в конце .csrf() для проверки, запрос прошел, поэтому CORS не блокирует его. Вот мой метод конфигурации для HttpSecurity:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/auth/**", "/signup/**").permitAll()
.and()
.headers()
.and()
.exceptionHandling()
.and()
.cors()
.and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
}
Моего Логин процесс на стороне клиента состоит из метода, который первым отправляет учетные данные, а затем использует маркер JWT для получения учетных данных. Эти два метода заключаются в следующем:
sendCredentials(model) {
let tokenUrl = 'http://localhost:8080/user/login';
let headers1 = new Headers({'Content-Type': 'application/json'});
return this.http.post(tokenUrl, JSON.stringify(model), {headers: headers1});
}
sendToken(token){
let userUrl = 'http://localhost:8080/rest/user/users';
let headers2 = new Headers({'Authorization': 'Bearer '+token});
return this.http.get(userUrl, {headers:headers2});
}
Что мне не хватает для удовлетворения требований к защите CSRF? Это клиентская сторона? Или мне нужно добавить /login/ в мой список antMatchers?
Спасибо за ответ! Он добавляет базу знаний, поэтому я отметил это как ответ. –