В нашем защищенном приложении Apereo CAS 5.3.8 нам необходимо отобразить после входа в систему экран, который показывает выпадающий список с некоторыми значениями, из которых пользователь должен выбрать один вариант.Экран должен отображаться только при соблюдении определенных условий, в зависимости от некоторых пользовательских атрибутов.В некоторых сценариях все необходимые нам атрибуты загружаются после входа в систему, но в других случаях нам нужно загружать дополнительные атрибуты в зависимости от выбора пользователя.Затем пользовательский выбор должен быть преобразован в некоторые другие пользовательские атрибуты, которые мы хотим сохранить в утверждении CAS, чтобы клиентское приложение могло получить доступ к пользовательским атрибутам и принимать решения на основе этих атрибутов.
Чтобы отобразить этот дополнительный экран, мы создали собственного многофакторного поставщика.Загруженные атрибуты передаются в PrincipalFactory
реализацию.
Почти все работает нормально, кроме той части, которая происходит после выпадающего выбора пользователя.Вопрос в том, как я могу загрузить основные атрибуты в два этапа?Я попытался обновить объекты principal
и authentication
в своем настраиваемом действии, которое запускается после выбора пользователя, но не работает, оно всегда сохраняет старый принципал с атрибутами, загруженными сразу после входа в систему.
Я думаю, что проблема может быть связана с тем фактом, что атрибуты передаются в PrincipalFactory
и, вероятно, они записываются только один раз и становятся неизменяемыми.Я пытался использовать AuthenticationTransactionManager
и AuthenticationResultBuilder
, но не смог добавить дополнительные вычисляемые атрибуты.
Любое руководство будет высоко оценено.