Реализация CSRF не работает с OAM

#angular #spring-security #csrf #csrf-token #x-xsrf-token

#angular #spring-безопасность #csrf #csrf-токен #x-xsrf-токен

Вопрос:

Наше приложение представляет собой пружинную загрузку с angular. По соображениям безопасности нам необходимо реализовать CSRF. Мы выполнили реализацию, но все еще получаем запрет 403. Мыиспользуем аутентификацию для входа в OAM. Несмотря на то, что для HttpOnly установлено значение false, в браузере мы видим, что оно не равно false. Мы хорошо видим токен.

 HttpClientXsrfModule.withOptions({cookieName: 'XSRF-TOKEN', headerName: 'XSRF-TOKEN'})
  

Это код в интерфейсе angular.

Мы уже реализовали приведенный ниже код в серверной части: Класс конфигурации:

 http
  .httpBasic()
  .and()
  .csrf() // csrf config starts here
  ignoringAntMatchers(CSRF_IGNORE) // URI where CSRF check will not be applied
  .csrfTokenRepository(csrfTokenRepository()) // defines a repository where tokens are stored
  .and()
  .addFilterAfter(new CsrfFilter(), CsrfFilter.class); 

private CsrfTokenRepository csrfTokenRepository() {
    CookieCsrfTokenRepository repo =  CookieCsrfTokenRepository.withHttpOnlyFalse();
    /*repo.setHeaderName(CsrfFilter.CSRF_COOKIE_NAME);*/
    repo.setHeaderName("XSRF-TOKEN");
    return repo;
} 
  

И код фильтра:

 private Filter csrfHeaderFilter() {
    return new OncePerRequestFilter() {
        @Override
        protected void doFilterInternal(HttpServletRequest request,
                                        HttpServletResponse response, FilterChain filterChain)
                throws ServletException, IOException {
            CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class
                    .getName());
            if (csrf != null) {
                Cookie cookie = new Cookie("XSRF-TOKEN", csrf.getToken());
                cookie.setPath("/");
                response.addCookie(cookie);
            }
            filterChain.doFilter(request, response);
        }
    };
} ```

Any help and suggestions are welcome.
We are in doubt that may be OAM authentication does not go with CSRF implementation.


  

Ответ №1:

Angular имеет некоторые встроенные средства защиты от распространенных уязвимостей веб-приложений и атак, таких как XSS и CSRF . Смотрите следующую страницу:https://angular.io/guide/security

Комментарии:

1. Да, мы реализовали в точности то, что упомянуто на этой странице.