私はSpring Boot(1.2.7.RELEASE)とVaadin(7.6.3)に基づいてアプリケーションを構築しようとしています。私の問題は、Spring SecurityとVaadinを統合できないことです。私はカスタムVaadinのLoginScreenとSpring Securityコントロールを構築したい。次のように私のプロジェクトのセットアップは次のとおりです。Vaadinログインによるスプリングブートセキュリティ
@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();
}
}
そして、ここでは私のVaadinのログインUIである
@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
}
}
私が起動すると私のアプリケーションスプリングは結構です、私のログインUI、に私をリダイレクトします。
しかし、私は春のセキュリティメカニズムと私のmainUIへのディスパッチに対してユーザーを認証する方法がわかりません。
また、私はCSRFを無効にしない場合、私は症例報告書のトークンがnull例外ではあり得るでしょう、CSRFトークンとの問題に直面しています。私はこれらの問題を扱う多くの例を見つけましたが、Vaadinで提供されるソリューションはありません。
ありがとうございました。
私はVaadin + Spring Boot + Spring Securityを使用したアプリケーションの実際の例を持っていますが、残念ながらこの例はまだ文書化されていません。しかし、おそらくあなたの仕事のためのコードからいくつかのインスピレーションを得ることができます:https://github.com/rolandkrueger/vaadin-by-example/tree/master/en/architecture/SpringBootSecurity –
ちょっとローランド、私はあなたのプロジェクトを見てきましたそれは多くの助けとなりました。それを共有してくれてありがとう。 –
あなたの質問に実際に答えなくてもうれしいです;-) –