Mam rest api wystawione w spring boot do którego strzela front end napisany w Vue. Jak teraz bezpiecznie zaimplementować autoryzację użytkowników? Z tego co czytałem to klasycznej sesji przez cookies nie zaimplementuje (chyba, że czegoś nie rozumiem i jest to możliwe) - wszystkie tutoriale, które widziałem używają springa i frontu server side rendering (na przykład thymeleaf). Czy pozostaje mi tylko JWT? Jeżeli tak to wiem, że można to rozegrać na 2 sposoby.
- JWT trzymany w session storage. Wszędzie odradzany, łatwa podatność na XSS. Czyli odpada.
- JWT trzymany w cookie httpOnly. Wtedy trzeba się martwić o CSRF. Pytanie czy żeby zabezpieczyć się przed CSRF wystarczy ustawienie na cookie sameSite=strict? Teoria mówi, że tak. W dokumentacji jest informacja, że gdy zapytanie do mojego serwera zostanie wygenerowane z innej domeny niż ta, dla której ciasteczko zostało utworzone, przeglądarka nie dołączy takiego ciasteczka do żądania. Pytanie czy w praktyce rzeczywiście tak to wygląda i nas zabezpiecza.
Widziałem, jeszcze, że są CSRF tokeny, ale nie bardzo rozumiem ideę działania. To jest możliwe przy client-side front typu Vue, React? Jeżeli backend ma zapisywać csrf token w cookie XSRF-TOKEN i front ma dołączać ten token przy każdym newralgicznym strzale do backendu to co stoi na przeszkodzie atakującemu wyjęcie sobie tego ciasteczka z tokenem tak samo jakby wyciągał JWT z cookie przy klasycznym ataku CSRF? Prosiłbym i jakieś nakierowanie w tym temacie i wskazanie błędów w moim toku myślenia.