2016-02-25 172 views
1

我正在开发我的春季启动应用程序,它受春季安全保护。这里是安全配置的一部分:弹簧安全和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管理我的应用程序。 我已阅读“在Spring或Vaadin中禁用CSRF保护,如果您同时打开了,您的应用程序将无法工作。”“。

在我的情况下,我需要禁用Vaadin中的CSRF保护,但我找不到如何使用Java配置来实现。

这一刻我得到:https://127.0.0.1:8443/vaadinServlet/UIDL/?v-wsver=7.5.5&v-uiId=0“通讯错误:UIDL无法从服务器读取检查servlet的映射错误代码:403”,从主力到其他视图导航过程中。 (例如:/ dashboard#!myview)。这是因为AccessDeniedHandlerImpl句柄方法被调用。我曾尝试解决此问题使用下面的语句,但它并不能帮助:

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

所以,请帮我解决这个两个问题:

  1. 禁用CSRF在VAADIN使用Java的配置。
  2. 解决视图导航问题。

感谢

回答

1

要解决上述问题,我决定我的项目分成两个模块。首先是API应用程序,它具有自己实施的安全配置。其次是仪表板,基于这个sample,Spring Security与Vaadin4Spring集成。