Sesje w Springu

0

Cześć, przekopując internet dowiedziałem sie, że JWT jest złym pomysłem jeśli chcemy sprawdzać sesję użytkownika - JWT jest dobrym wyjściem przy komunikacji API - API.
Tak więc chciałbym pochłonąć jak najwięcej wiedzy o sesjach (na czysto) jak i zarządzaniu o sesjami w Springu. Mój cel jest dość prosty: jeden endpoint to rejestracja: wysyłam tam JSON'a, który jest parsowany na DTO i w zależności od walidacji albo tworzymy user'a, albo zwracamy odpowiedni HttpCode i ErrorMessage. Potem mamy endpoint logowania, tutaj chciałbym wysłać JSON'a z loginem i hasłem, który jest mapowany znów na DTO i sprawdzany czy taki login istnieje, jeśli tak to czy hasło jest poprawne. No i po tym tworzymy sesje, która pozwala takiemu userowi teraz chodzić między endpointami bez zmartwień. Czy Spring załatwia to automatycznie poprzez http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED);? Jeśli tak to czy wtedy automatycznie przesyła Cookies z JSessionID? Jak takie coś ładnie sprawdzić sobie np. w Postmanie?

Z góry dzięki.

0

To czytałeś? Wrzucam tu na forum chyba trzeci raz :) https://spring.io/guides/tutorials/spring-security-and-angular-js/

0

Czyli jak widzę Spring Security automatycznie obsługuje sesje? Bo jak widzę w początkowym configu nie dodano nic ponad podstawy, a JSessionID było już w Cookies. Teraz pytanie jak takie sesje ładnie obsługiwać sobie np. w Postmanie?

0

Nic nie dzieje się samo, zobacz w autokonfiguracji, co skonfigurował za Ciebie Spring Boot . W postmanie dodaj nagłówek cookie do requestu:

curl http://localhost:8080/resource --cookie "JSESSIONID=5DAE39CE0890CC02A7EB08B67C3A9849"
Hello world!%
0

Czyli między requestami będę musiał ręcznie sobie taki Cookie przesyłać dalej jeśli chodzi o Postmana. Co do autokonfiguracji: jeśli nadpiszę ją swoim SecurityConfigiem z metodą configure automatycznie sesje będę musiał ustawiać sam?

0

Przeglądarka sama ustawi Ci ciastko, które otrzymała z serwera tak długo, aż jest ważne.

Jeśli chodzi o drugie pytanie - tak mi się wydaje, Spring Boot nie odpali defaultowej konfiguracji. Ale spróbuj, generalnie często wystarczy podziedziczyć po WebSecurityConfigurerAdapter i nadpisać configure() - tak powinno się tego używać, zawsze tak długo jak to możliwe korzystać z „extension points”, które udostępnia framework.

0

Tak, to że przeglądarka automatycznie ogarnie mi ciastko między requestem to wiem, natomiast Postman chyba nie jest aż tak mądry - słyszałem coś o jakimś extensionie, który można połączyć z Chromem. Dzięki.

0

Im więcej o tym czytam tym większy mętlik mam w głowie. Internet twierdzi, że trzymanie sesji w cookies przy SPA nie jest najlepszym pomysłem. Na ile to prawda? Jak tak naprawdę dobrze zabezpieczyć taką prostą SPA typu Spring + Angular? Gdzie w zasadzie jedyne co mi trzeba to: rejestracja + logowanie (które będą określały mi dostęp na endpointy - raz się zaloguję, a endpointy będą dostępne).

0

Chodzi o skalowanie oraz zarządzanie scopami, jeśli z API korzystają też inne klienty, np. mobilka. https://ponyfoo.com/articles/json-web-tokens-vs-session-cookies

W Twoim przypadku ciacho jest OK.

0

Rozumiem, czyli jeśli u mnie obecny jest jeden klient i nie mam żadnych serwisów zewnętrznych to ciastka są wystarczające?

0
Charles_Ray napisał(a):

W Twoim przypadku ciacho jest OK.

1 użytkowników online, w tym zalogowanych: 0, gości: 1