Слетает сессия в production после апгрейда до 2.2.1

Добрый вечер!
Сменил версию 2.1 → 2.2.0 → 2.2.1 последовательно. На версии 2.2.1 в production стала внезапно слетать сессия и показывать login страничку. Закономерности не увидел. Не важно под кем заходить, admin или другая роль. Если слетает сессия, то иногда при нажатии на dataGrid получаю в лог следующее

Caused by: java.lang.IllegalStateException: ResourceRole not found by code: ANONYMOUS

при нажатии в области menu tab вылетает в login.
Сборка для prod
./gradlew -Pvaadin.productionMode=true bootJar

В dev mode ошибок и такого поведения не наблюдается.
В prod приложение работает в docker и стоит за nginx с ssl
возможно проблема в правилах nginx.
На версии 2.1 все работало корректно.
Прошу совета куда глядеть .

PS: заметил особенность, если в login страничке отметить checkbox “remember me”, то сессия , либо слетает сразу, т.е. приходится войти второй раз и дальнейшая работа идет без сбоев, либо вход и работа проходят штатно .

Аналогичное поведение. Только приложение работает на Tomcat 10.1.19. На проде и в разработке используется LibericaJDK 17.

Добрый день.

Не могли бы Вы приложить полный лог приложения, а так же проверить лог консоли браузера и/или вкладки network на наличие ошибок, в частности 403 Forbidden?

Есть предположение, что проблема может быть связана с библиотекой atmosphere, которую использует Ваадин. Так же, Вы очень поможете, если обновите версию Ваадина в своем проекте и проверите будут ли изменения к лучшему. Для этого нужно явно указать версию Ваадин плагина

plugins {
    id 'io.jmix' version '2.2.1.1'
    id 'java'
    id 'com.vaadin' version '24.3.8' <--- тут добавить
}

apply plugin: 'org.springframework.boot'
//apply plugin: 'com.vaadin' <--- вот это удалить

И версию самого Ваадина:

dependencies {
    ...

    implementation "com.vaadin:vaadin-spring-boot-starter:24.3.8"
    implementation "com.vaadin:vaadin-core:24.3.8"
    implementation "com.vaadin:vaadin-bom:24.3.8"
}

Глеб

Обновление “атмосферы”, к сожалению, не помогло.
Запросов с 403 не заметил.
Все логи выслал.

Спасибо за логи, пока причина не ясна. не могли бы Вы попробовать вывести в лог актуальные таймауты сессии на старте приложения. И создать листенеры на HttpSessionCreatedEvent/HttpSessionDestroyedEvent и логировать их, а так же включить

logging.level.org.springframework.security=debug

Глеб

Не могли бы Вы поподробнее описать куда и с какими настройками производится деплоймент?

Все сделал как Вы сказали, логи с issue выслал.
Production окружение:

OS Ubuntu 22.04.3 LTS
Docker container

подробности выслал в личку.

Добрый день!
В логах увидели подозрительные отбрасывания запросов на /VAADIN/push с 403 ошибкой из-за CSRF.
Будет у вас возможность отключить CSRF для этого эндопойнта, зарегистрировав следующий бин в проекте, и понаблюдать за приложением после этого?

@Bean
@Order(JmixSecurityFilterChainOrder.FLOWUI - 10)
SecurityFilterChain vaadinPushFilterChain(HttpSecurity http) throws Exception {
    http.securityMatcher("/VAADIN/push/**")
            .authorizeHttpRequests(requests -> requests.anyRequest().permitAll())
            .csrf(csrf -> csrf.disable());
    return http.build();
}
2 симпатии

Добрый вечер!

Сделал как Вы написали.
Сессия слетать перестала.
Лог выслал в личку.

PS: насколько безопасно отключать CSRF для /VAADIN/push/** ? Или есть другие решения?
PSPS: Ждем исправления:
VaadinWebSecurity does not ignore CSRF for Flow PUSH connection request · Issue #19075 · vaadin/flow · GitHub