Usystematyzowanie wiedzy z zakresu JWT.

0

Cześć,

chciałbym użyć JWT w swojej aplikacji backendowej ale nie bardzo chyba do końca rozumiem czy ma to tak wyglądać i jak to zrobić w praktyce. W teorii mam zamysł taki:

-zapisuje sobie usera z rolą user w bazie danych ( zwykła rejestracja: login + hasło )
-mam zabezpieczony endpoint załóżmy, że będzie to /hello pod którym zwara mi napis "Hello 500+"
-aby user mógł uzyskać dostęp do /hello muszę.. no właśnie. Co? :D I tutaj trochę się gubie co mam zrobić ( i jak go zrobić) z tym tokenem:

-mam stworzyć osobne api do generowania tokenów czy mogę to zrobić wszystko w jednym api?
-ja podaję temu api od tokenów hasło + login usera ( a może to z bazy jest wyciągane, po coś w końcu tych ludzi tam chce trzymać ) i on zwraca mi token z którym... nie wiem, chyba idę do endpointu /hello i tam gdzieś jest sprawdzane czy z tym tokenem mogę zobaczyć co się kryje pod /hello ?

Chce się z tym pobawić w postmanie stąd frontent nie jest mi potrzebny. Nie bardzo wiedziałem jak wpisać w google ( spring + hibernate + jwt + endpoint ? xd ) aby tam pierw uzyskać pomoce naukowe : X

0

https://github.com/Pharisaeus/almost-s3 nie do tego miał być ten projekt, ale przypadkiem jest tam obsługa JWT a w testach jest też pokazane jak można generować tokeny jeśli faktycznie chcesz to robić sam

5

"To zależy". Chcesz tego jwt użyć na zasadzie zwykłego api-key czy chcesz mieć np oauth2? Chociaż proces "początkowy" bedzie podobny, przykładowo dla pierwszego logowania ever:

  1. Wysyłasz login+hasło pod endpoint np /auth/token w twojej aplikacji
  2. Apka sprawdza czy istnieje taki user,
  3. Jeśli tak, generujesz jwt i zwracasz
  4. Przy strzale pod /hello doklejasz header Authorization z wygenerowanym tokenem
  5. Taki zbiór zabezpieczonych endpointów poprzedzasz czymś ala interceptor/filter, który bedzie weryfikował token i jeśli sie zgadza to bedzie przekazywal request dalej (czyli tutaj do kontrolera od /hello). A jesli token sie nie zgadza to wywaleczka z jakims 403 i kontroler od /hello nawet nie zostanie "uruchomiony"

Jak masz frontend to taki token mozesz wsadzic w local/session storage przegladarki

A co do samych szczegółów jwt to można zacząć od https://jwt.io/

1

Dużą zaletą JWT jest to, że serwis wystawca JWT i serwis udostępniający zabezpieczone dane to dwa różne serwisy. Musisz jedynie zadbać o współdzielenie sekretu, lub wystawić w tym pierwszym endpoint JWKS.

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