пружинная безопасность и VAADIN

Я разрабатываю свое весеннее загрузочное приложение, защищенное весенней безопасностью. Вот часть защищенной конфигурации:

@Override
    public void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
           // .csrf().ignoringAntMatchers("/dashboard")
           // .and()
            .httpBasic()
            .and()
                .headers().frameOptions().disable()
            .and()
                .antMatcher("/**").authorizeRequests()
                .antMatchers("/VAADIN/**", "/PUSH/**", "/UIDL/**").permitAll()
                .antMatchers("/vaadinServlet/UIDL/**").permitAll()
                .antMatchers("/vaadinServlet/HEARTBEAT/**").permitAll()
                .antMatchers("/actuator/health").permitAll()
                .antMatchers("/actuator/**").hasAuthority(Authority.Type.ROLE_ADMIN.getName())
                .antMatchers("/", "/login**", "/index.html", "/home.html").permitAll()
            .and()
                .logout().logoutSuccessUrl("/").permitAll()
            .and()
                .csrf().csrfTokenRepository(csrfTokenRepository())
            .and()
                .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class)
                .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);
        // @formatter:on
    }

Я собираюсь внедрить некоторую панель администратора для управления своим приложением с помощью VAADIN. Я читал, что «Отключите CSRF-защиту в Spring или Vaadin. Если вы оба включили, ваше приложение не будет работать.».

В моем случае мне нужно отключить CSRF-защиту в Vaadin, но я не нашел, как это сделать с помощью Java config.

На данный момент я получаю: https://127.0.0.1:8443/vaadinServlet/UIDL/?v-wsver=7.5.5&v-uiId=0 "Ошибка связи: UIDL не может быть прочитан с сервера. Проверьте сопоставления сервлетов. Код ошибки: 403"< /strong> во время перехода от основного представления к другим представлениям. (например: /dashboard#!myview). Это потому, что вызывается метод дескриптора AccessDeniedHandlerImpl. Я попытался исправить это, используя следующие утверждения, но это не помогает:

.antMatchers("/vaadinServlet/UIDL/**").permitAll()
.antMatchers("/vaadinServlet/HEARTBEAT/**").permitAll()

Итак, пожалуйста, помогите мне решить эти две проблемы:

  1. Отключите CSRF в VAADIN с помощью конфигурации Java.
  2. Решить проблему с просмотром навигации.

Спасибо


person I. Domshchikov    schedule 25.02.2016    source источник


Ответы (1)


Чтобы исправить вышеуказанные проблемы, я решил разделить свой проект на два модуля. Во-первых, это приложение API, которое имеет собственную реализованную конфигурацию безопасности. Во-вторых, это Dashboard, в котором Spring Security интегрирован с Vaadin4Spring на основе этого образец.

person I. Domshchikov    schedule 03.03.2016