Нет лучшего источника ответов, кроме Shiro's javadoc. doGetAuthenticationInfo() возвращает AuthenticationInfo. SimpleAuthenticationInfo - это реализация AuthenticationInfo. Subject "представляет состояние и операции безопасности для одного пользователя приложения", поскольку состояния javadoc, поэтому нет, мы не задаем этот вопрос здесь, но структура неоднократно настраивает его для каждого запроса. Цель (Simple) AuthenticationInfo состоит в том, чтобы представлять «сохраненную учетную информацию» субъекта (аки) пользователя, относящуюся только к процессу аутентификации/входа в систему ». Ответственность области заключается в создании AuthenticationInfo (если пользователь найден), а CredentialsMatcher сравнивает AuthenticationToken с AuthenticationInfo, чтобы определить, действительны ли данные учетных данных или нет.
Вы не объясняете, как вы «застреваете», но при условии, что ваш findByUsername() возвращает соответствующий UserAccount, у вас, вероятно, нет правильного мандата CredentialsMatcher. Возможно, вам понадобится set a HashedCredentialsMatcher to your realm.