Apereo CAS загружает пользовательские атрибуты в два этапа и сохраняет их для выпуска атрибутов - PullRequest
4 голосов
/ 02 апреля 2019

В нашем защищенном приложении Apereo CAS 5.3.8 нам необходимо отобразить после входа в систему экран, который показывает выпадающий список с некоторыми значениями, из которых пользователь должен выбрать один вариант.Экран должен отображаться только при соблюдении определенных условий, в зависимости от некоторых пользовательских атрибутов.В некоторых сценариях все необходимые нам атрибуты загружаются после входа в систему, но в других случаях нам нужно загружать дополнительные атрибуты в зависимости от выбора пользователя.Затем пользовательский выбор должен быть преобразован в некоторые другие пользовательские атрибуты, которые мы хотим сохранить в утверждении CAS, чтобы клиентское приложение могло получить доступ к пользовательским атрибутам и принимать решения на основе этих атрибутов.

Чтобы отобразить этот дополнительный экран, мы создали собственного многофакторного поставщика.Загруженные атрибуты передаются в PrincipalFactory реализацию.

Почти все работает нормально, кроме той части, которая происходит после выпадающего выбора пользователя.Вопрос в том, как я могу загрузить основные атрибуты в два этапа?Я попытался обновить объекты principal и authentication в своем настраиваемом действии, которое запускается после выбора пользователя, но не работает, оно всегда сохраняет старый принципал с атрибутами, загруженными сразу после входа в систему.

Я думаю, что проблема может быть связана с тем фактом, что атрибуты передаются в PrincipalFactory и, вероятно, они записываются только один раз и становятся неизменяемыми.Я пытался использовать AuthenticationTransactionManager и AuthenticationResultBuilder, но не смог добавить дополнительные вычисляемые атрибуты.

Любое руководство будет высоко оценено.

...