Ресурсы Vaadin 24 для обхода Spring Security
Для Vaadin 14 существует документация, в которой четко указано, какие ресурсы Vaadin следует добавить в конфигурацию для обхода Spring Security: https://vaadin.com/docs/v14/flow/tutorial/login-and-authentication .
/**
* Allows access to static resources, bypassing Spring Security.
*/
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers(
// Client-side JS
"/VAADIN/**",
// the standard favicon URI
"/favicon.ico",
// the robots exclusion standard
"/robots.txt",
// web application manifest
"/manifest.webmanifest",
"/sw.js",
"/offline.html",
// icons and images
"/icons/**",
"/images/**",
"/styles/**",
// (development mode) H2 debugging console
"/h2-console/**");
}
Я не могу найти ту же информацию для Ваадина 24.
Это моя текущая конфигурация:
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
web.ignoring().requestMatchers(
"/session-expired",
"/images/*",
"/login",
"/favicon.ico",
"/favicon-notification.ico",
"/offline.html",
"/offline-stub.html",
"/sw-runtime-resources-precache.js",
"/robots.txt");
}
Что еще нужно добавить для корректной работы Vaadin 24? Нужно ли добавлять туда что-нибудь еще, например:
"/VAADIN/**",
"/sw.js",
или что-то другое?
2 ответа
Вы можете расширить класс VaadinWebSecurity, который устанавливает необходимые правила для приложения Vaadin.
https://vaadin.com/docs/latest/security/enabling-security/#security-configuration-class
Если по какой-то причине вы не можете его расширить, посмотрите код, чтобы увидеть, что настроено.
Вы должны обернуть свои пути вAntPathRequestMatcher
объекты. Это моя рабочая конфигурация для Vaadin 24 Flow:
/**
* @see VaadinWebSecurity#configure(HttpSecurity)
*/
@Override
protected void configure(@NotNull final HttpSecurity http) throws Exception {
http.authorizeHttpRequests().requestMatchers(
// Client-side JS
new AntPathRequestMatcher("/VAADIN/**"),
// the standard favicon URI
new AntPathRequestMatcher("/favicon.ico"),
// the robots exclusion standard
new AntPathRequestMatcher("/robots.txt"),
// web application manifest
new AntPathRequestMatcher("/manifest.webmanifest"),
new AntPathRequestMatcher("/sw.js"),
new AntPathRequestMatcher("/offline.html"),
// icons and images
new AntPathRequestMatcher("/icons/**"),
new AntPathRequestMatcher("/images/**"),
new AntPathRequestMatcher("/styles/**"),
// (development mode) H2 debugging console
new AntPathRequestMatcher("/h2-console/**")
).permitAll();
super.configure(http);
setLoginView(http, LoginView.class, LOGOUT_URL);
}