2017-02-20 63 views
0

Наш веб-интерфейс с угловым базисом интегрирован с корпоративным порталом, который работает на разных доменах и пути контекста. Я использую токен CSRF на основе Spring Security для проверки входящих запросов. Приложение прекрасно работает на локальном компьютере, но когда я интегрирую его с порталом, все сообщения, вызывающие ошибки 403, потому что Angular не может читать XSRF-токен и устанавливать X-XSRF-токен в заголовках запросов на вызовы API. После расследования я нашел контекстные пути портала, и наше приложение отличается, и поэтому весна устанавливает XSRF-токен с Path, Expires и domain как Null. Есть ли способ установить XSRF-токен на определенный путь к файлу cookie, когда весна его создает?Как установить токен CSRF на другой путь контекста

Примечание: У меня есть альтернативное решение для создания фильтров и чтения файлов cookie из заголовков запросов и отправки нового файла cookie в браузере с помощью пути, который я хочу. Я ищу решение на уровне конфигурации.

ответ

0

В вашей конфигурации безопасности (Java-файл), можно добавить:

private CsrfTokenRepository getCsrfTokenRepository() { 
    CookieCsrfTokenRepository tokenRepository = CookieCsrfTokenRepository.withHttpOnlyFalse(); 
    tokenRepository.setCookiePath("/"); 
    return tokenRepository; 
} 

и изменения в функции configure(...), линия:

http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and()...

с

http.csrf().csrfTokenRepository(this.getCsrfTokenRepository()).and()...

Это позволяет получить решение для персонализации пути для файла cookie XSRF-TOKEN.

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

  • Нет связанных вопросов^_^