Kurs Spring Boot #07 - Spring Security i JWT Token

preview_player
Показать описание
W tym odcinku zajmę się Spring Security i zaimplementuję uwierzytelnienie w serwisie restowym. Pokażę, jak uwierzytelniać użytkowników korzystając z sesji http, a później dostosuję to uwierzytelnienie do obsługi Json Web Token.

🛑 Warsztat Architektura Heksagonalna

🔶 Kurs Hibernate

🔷 Warsztat Architektura Warstwowa

✅ Kurs Testy jednostkowe

Timeline:
00:00 Wstęp
00:20 Jak przystosować Spring Security do JWT?
00:47 Co to jest Json Web Token?
02:08 Tworzę konfigurację Spring Security
07:26 Dodaję kontroler do logowania
09:51 Dodajemy filtr do logowania Jsonem
16:00 Testuję działające uwierzytelnienie przy użyciu sesji http
18:27 Implementuję obsługę Json Web Token
19:55 Dodaję zwracanie tokena w successHandlerze
23:30 Dodaję filtr do autoryzacji endpointów
29:38 Dostosowuję Swaggera do obsługi Json Web Token
32:13 Jak wstrzyknąć uwierzytelnionego użytkownika do metody kontrolera?

#springsecurity #springbootsecurity #programowanie #spring #naukaprogramowania

Spring Security – uwierzytelnienie przy pomocy jsona

Spring Security i Json Web Token

✅ Zapisz się na newsletter, żeby być na bieżąco:

Github projektu:

Social media:
Рекомендации по теме
Комментарии
Автор

Jeśli podobają Ci się moje filmy, to zostaw łapkę w górę i za subskrybuj mój kanał. Zapraszam Cię także do zapoznania się z moimi kursami i warsztatami:

matdabski
Автор

Tematy są fajniejsze niż w płatnych kursach :)

Polpl
Автор

❌ Przy wstrzykiwaniu danych usera trzeba użyć obiektu typu String zamiast Powinno być @AuthenticationPrincipal String user. Niestety zmieniło się to w Springu jakiś czas temu

matdabski
Автор

super filmik i nie tylko ja to zauwazylem ale dobrze sie ciebie slucha i oglada twoje kursy sa zrobione w prosty sposob i bez owijania w bawelne. ja jako osoba ktora dopiero zaczyna przygode z Rest Api nie ukrywam ze dla mnie zrobil sie duzy skok pomiedzy poprzednim odcinkiem a tym tutaj i troche robi sie to wszystko "trudne" ale wiadomo ze to pierwsza porcja wiedzy na ten temat wiec tez nie ma sie co dziwic. Mam nadzieje ze z czasem zaczne to lepiej rozumiec i lepiej zalapie jak to wszystko ze soba jest powiazane a narazie chyba jeszcze wroce do twoich artykulow zeby wiecej o tym wszystkim poczytac i lepiej to wszystko zrozumiec. ogolnie daze do tego aby napisac sklep internetowy i na pewno bede sledzil twoj kanal aby dowiedziec sie w jaki sposob zrobic taki sklep jak najbardziej optymalnie i aby byl bezpieczny do uzytkowania. w razie pytan mozna pisac do ciebie na FB? ;)

Karetson
Автор

Bardzo fajne materiały, oby tak dalej

jankowalski
Автор

Hejo :), mam pytanie do klasy pakietu config. Niektóre klasy mają w nim adnotacje @Configuration, kolejne @Component, a jeszcze inne w ogóle jej nie mają. Możesz rozwinąć z czego dokładnie to wynika ?

przemysawmaecki
Автор

Utknąłem w 29:38, mianowicie nie wiem jak dodać autoryzację w swaggerze 3.0 . Może mógłbyś mi coś podpowiedzieć?

bazejkrzesicki
Автор

odpowiedz na pytanie z 19:40
można by token takiego uzytkownika trzymac w jakiejs liscie (np revokedTokens) do momentu az expire tego tokena zostanie przekroczony (wtedy nie musimy trzymac juz tego tokena). I sprawdzac to w jakims filtrze (a jak token bedzie matchowal to rzucic exception)

teczowyrozowy
Автор

Zablokowałem się na 6:25. Po wstępnej konfiguracji security, wchodzisz do Swaggera i endpoint zwraca Ci HTMLa, a u mnie nadal jest ten sam JSON co wcześniej.
Dodatkowo, Ciebie nie prosi na tym etapie o hasło, a ja muszę się najpierw zalogować tymi "test", "test".
Da się po tym opisie poznać gdzie jest u mnie błąd? 🙂

the_last_blue_shiba
Автор

Wyczyszczenie kontekstu security w aplikacji jako wylogowanie? W sensie czy jeszcze trzeba zadbać o sesję?

joachimtworko
Автор

Fajnie, tylko drobna uwaga: jak wklejasz nagle nowe metody np. createSchema, to dodaj proszę z jakiej biblioteki bierze się SecurityContext :)

hollyhock
Автор

Dlaczego w JwtAuthorizationFilter w metodzie doFilterInternal odwołujemy się do "userDetailsService"? Odwołujemy się pierwszy raz przy logowaniu i tworzeniu tokena, a drugi przy jego weryfikacji. Nie powinniśmy stworzyć UserDetails na podstawie informacji z tokena? Chcę stworzyć osobny moduł do autentykacji. Czy dobrym rozwiązaniem będzie w module z użytkownikami generować token przy logowaniu, a w modułach odpowiedzialnych za inne logiki otrzymywać ten token i wyciągać z nich takie dane jak username, role i id i na ich podstawie stworzyć sobie userDetails?

krystianc
Автор

Cześć :) Mam pytanie. Przy pierwszym odpaleniu aplikacji po skonfigurowaniu Spring Security, apka wstaje normalnie. Natomiast przy kolejnych uruchomieniach sypie błędami, że tabela USERS już istnieje. Zastanawiam się co robię nie tak, ponieważ Ty nie napotkałeś takich błędów. Super kurs !

Podaję logi:
Error creating bean with name 'springSecurityFilterChain' defined in class path resource Bean instantiation via factory method failed; nested exception is Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is Failed to execute SQL script statement #1 of class path resource create table users(username varchar_ignorecase(50) not null primary key, password varchar_ignorecase(500) not null, enabled boolean not null); nested exception is Table "USERS" already exists; SQL statement:
create table users(username varchar_ignorecase(50) not null primary key, password varchar_ignorecase(500) not null, enabled boolean not null) [42101-200]

Luxlji
Автор

Mam pytanie co w przypadku gdybyśmy nie chcieli stosować ról użytkowników. Co należy zmienić w SecurityConfig?

pabas
Автор

a mi po wpisaniu wykrywania tego błedu 400, nie wyświetla się ani swagger ani h2-console.
co może byc przyczyną??

Stecyk
Автор

Krótko żyjący JWT + Refresh Token, przy wylogowaniu unieważniamy refresh token po stronie serwera.

kacper
Автор

a ja mam małe pytanie, czy przy takim sposobie dane przesyłane są przez https? Bardzo chciałbym nauczyć się spring security i logowania za pomocą rest api, ale zwyczajnie nie jestem pewien, czy dane przesyłane są tutaj bezpiecznie

marcin
Автор

I co teraz jeśli chce zaimplementować rejestrację (czyli service + repo) albo wylogowanie ?

TheAlvipl
Автор

A jak ma w końcu wygtląać to wylogowywanie?
Używam JWT tokena i niektórzy mówią, że backend nie powinien zajmować się tokenami, a front-end powinien je "gubić" podczas wylogowywania.
Na chwilę obecną wygląda to tak, że korzystając z JWT tokena, po wylogowaniu nadal mogę się nim autoryzować lub odświeżyć refresh-tokenem.
Czy powinienem w jakimś SuccessLogoutHandlerze "dezaktywować" tokeny, czy faktycznie to olać bo powinno się to odbywać po stronie frontu?

Pozdrawiam :)

waldemarjankowski
Автор

Świetny materiał, czy mógłbyś jeszcze nagrać jak zabezpieczać endpoty za pomocą API KEY?

robertstan