Вы должны использовать Spring Security (SprSec), который является основной платформой для реализации аутентификации и авторизации в вашем приложении Java.
SprSec предоставляет инфраструктуру аутентификации, которая поддерживает имя пользователя / пароль с помощью BasicAuthentication на основе браузера или с помощью сгенерированной формы входа в систему, а также с другой парадигмой аутентификации, такой как предварительная аутентификация Open Id Connect. SprSec также легко настраивается при условии, что вы потратите значительное количество времени на чтение и изучение его возможностей.
SprSec предлагает широкие возможности автоконфигурации, которые адаптируются к контексту вашего приложения путем обнаружения настроенных библиотек на вашем пути к классам. Из того, что я вижу из вашего кода, вы, вероятно, сможете удовлетворить ваши потребности с небольшим количеством настроек. Однако я бы посоветовал вам использовать версию 4.x, которая позволяет заменить некоторые параметры автоконфигурации, в то время как версия 5 автоматически удалит все параметры автоконфигурации, как только вы создадите объект конфигурации (в данном случае класс WebSecurityConfigurerAdapter), и оставит вам настраивать весь shebang. Через некоторое время вы, безусловно, сможете, но для начала это может быть довольно сложным делом.
https://spring.io/guides/topicals/spring-security-architecture/
https://docs.spring.io/spring-security/site/docs/5.0.3.RELEASE/reference/html5/
Что касается JWT, есть много библиотек, которые вы можете использовать для генерации и проверки токенов. Их возможности могут быть легко интегрированы в процесс аутентификации и авторизации SprSec путем вставки фильтров сервлета в SprSec SecurityFilterChain (или вы можете получить из одного из множества предоставляемых фильтров SprSec).
Просмотр https://jwt.io/ ...
и прокрутите вниз мимо отладчика JWT. Вы найдете обширный список таких библиотек (6 в Java). Я лично одобряю Nimbus-jose-jwt за отличную документацию и широкое освещение стандарта.
В заключение я настоятельно рекомендую вам потратить время на использование SprSec, поскольку ваш подход заключается в том, чтобы заново изобрести очень, очень сложное колесо, а не использовать существующее сложное колесо, разработанное высококвалифицированными специалистами.
Надеюсь, это поможет.
Джейк