title: Spring Boot Security with Vaadin Login
body: <p>I try to build an application based on Spring Boot (1.2.7.RELEASE) and Vaadin (7.6.3). My problem is that I'm not able to integrate Spring Security with Vaadin. I want a custom Vaadin built LoginScreen and Spring Security control. My project setup is as follows:</p>
  
  <pre><code>@Configuration
  @EnableWebSecurity
  public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
  
      @Override
      protected void configure(HttpSecurity http) throws Exception {
          http.csrf().disable().
                  exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login")).accessDeniedPage("/accessDenied")
                  .and().authorizeRequests()
                  .antMatchers("/VAADIN/**", "/PUSH/**", "/UIDL/**", "/login", "/login/**", "/error/**", "/accessDenied/**", "/vaadinServlet/**").permitAll()
                  .antMatchers("/authorized", "/**").fullyAuthenticated();
      }
  }
  </code></pre>
  
  <p>And here is my Vaadin login UI</p>
  
  <pre><code> @SpringUI(path = "/login")
      @Title("LoginPage")
      @Theme("valo")
      public class LoginUI extends UI {
  
          TextField user;
          PasswordField password;
          Button loginButton = new Button("Login", this::loginButtonClick);
          private static final String username = "username";
          private static final String passwordValue = "test123";
  
          @Override
          protected void init(VaadinRequest request) {
              setSizeFull();
  
              user = new TextField("User:");
              user.setWidth("300px");
              user.setRequired(true);
              user.setInputPrompt("Your username");
  
              password = new PasswordField("Password:");
              password.setWidth("300px");
              password.setRequired(true);
              password.setValue("");
              password.setNullRepresentation("");
  
              VerticalLayout fields = new VerticalLayout(user, password, loginButton);
              fields.setCaption("Please login to access the application");
              fields.setSpacing(true);
              fields.setMargin(new MarginInfo(true, true, true, false));
              fields.setSizeUndefined();
  
              VerticalLayout uiLayout = new VerticalLayout(fields);
              uiLayout.setSizeFull();
              uiLayout.setComponentAlignment(fields, Alignment.MIDDLE_CENTER);
              setStyleName(Reindeer.LAYOUT_BLUE);
              setFocusedComponent(user);
  
              setContent(uiLayout);
          }
  
          public void loginButtonClick(Button.ClickEvent e) {
             //authorize/authenticate user
             //tell spring that my user is authenticated and dispatch to my mainUI
          }
  
      }
  </code></pre>
  
  <p>When I start my application spring redirects me to my login UI, which is fine. </p>
  
  <p>But I don't know how to authenticate the user against the spring security mechanism and dispatch to my mainUI. </p>
  
  <p>I'm also facing the problem with csrf tokens, if I don't disable csrf I'll get the crfs token is null exception. I found a lot of examples handling those problems but there is no solution provided with Vaadin.</p>
  
  <p>Thanks for help.</p>