Ресурсы 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);
}
Другие вопросы по тегам