Ошибка при аутентификации через REST Api (получение access_token)

Доброго дня!
Обнаружен баг во время аутентификации в приложение: при попытке получения access_token сервер отвечает ошибкой 500. Проявляется не сразу, далее опишу, как именно; но, по итогу, всё это приводит к невозможности использовать аутентификацию по rest-api.

  1. Создаем чистый проект jmix и добавляем к нему аддон REST-api.
  2. Разворачиваем и пробуем получить token для admin/admin, выполняем стандартную команду curl:
curl -H "Content-type: application/x-www-form-urlencoded" -u client:secret -d "grant_type=password&username=admin&password=admin" http://localhost:8080/oauth/token
  1. Токен успешно получен:
{"access_token":"57g2U4XnXtLuR9gx3ds9hTbR0pU","token_type":"bearer","refresh_token":"ym0kuw3J07k1G-Jk1aLv9ElImdk","expires_in":43199,"scope":"api","OAuth2.SESSION_ID":"FC8CBDCBF042E059D988381933235FB9"}
  1. Теперь авторизуемся также под admin/admin в приложение через ui. А далее самое главное: необходимо каким-то образом изменить тему для текущего юзера (неважно как, важно, чтобы появились об этом записи в таблице ui_Setting), например так:
    1

  2. Попробовать снова получить access_token для admin/admin той же командой curl. Теперь сервер отвечает так:

{"error":"server_error","error_description":"Internal Server Error"}
  1. В логах:
java.lang.NullPointerException: null

То есть, как только пользователь изменил себе настройки темы (в БД появились записи об этом), токен получить уже невозможно.

Детальный дебаг показал, что проблема кроется в бине io.jmix.ui.theme.ThemeSuccessfulAuthenticationListener, а ошибка возникает здесь:

Page.getCurrent().reload();

Почему для REST-api вызывается listener, который, судя по смыслу и названию перегружает страницу у только что аутентифицированного пользователя, вытаскивая из cookie настройки темы (обращаясь далее в таблицу ui_Setting в бд)? Ну и, очевидно, что токен для пользователя на текущий момент можно получить только при отсутствии записей themeMode и themeSize и бд у этого пользователя, что не может являться решением проблемы…

Похожая (возможно) проблема, но только для CUBA, была описана в этом посте: ошибка 401 при Rest-аутентификации, правда там была ошибка 401, но проблема решилась подстановкой cookie прямо в header’ы, что, по сути, могло бы помочь и мне. Очень похоже на эту же проблему. Сам CUBA не проверял, возможно такой баг присутствует и там.

Добрый день! Спасибо, что сообщили о проблеме!
Завели issue.