Na pewno istnieje prostsza metoda ale ja zrobiłem coś takiego przy użyciu Spring Security i Oauth2. W tym, że moduł security wykorzystałem w wersji 4.x a nie najnowszej 5.
Krótki opis. Login i hasło przechowujesz w bazie danych. Użytkownik wysyła dane logowania na serwer. Po poprawnym zalogowaniu z serwera dostajesz token(JWT), zapisujesz go sobie np w cookie bądź local storage przeglądarki. Tworząc jakieś zapytanie HTTP od strony frontu wysyłasz także wcześniej otrzymany token, i na jego podstawie serwer decyduje, czy masz odpowiednią rolę do korzystania z kontrolera REST'owego. Oczywiście konfigurujesz dostęp(ResourceServerConfig) oraz rodzaje ról, właściwości tokena itp (AuthorizationServerConfig).
Jeżeli chodzi o materiały jest pełno tutoriali z przykładami w necie opisujących to podejście. Osobiście polecam filmy użytkownika RocketMan na yt i jego tutorial wraz z kodem do gita.
PS. poza tym temat pasuje bardziej do działu JAVA, bo wiele tutaj z JS nie ma.