• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JSON Web Tokens (JWT) - logika działania

Object Storage Arubacloud
0 głosów
1,113 wizyt
pytanie zadane 14 maja 2019 w JavaScript przez wsnofi Bywalec (2,680 p.)
W niedawno zadanym pytaniu dostałem w odpowiedzi coś o nazwie JWT, co jest dokładnie tym czego potrzebowałem, tylko po przeczytaniu dość dużej ilości informacji na ten temat nie potrafie zrozumieć logiki działania owego tokenu.

 

Server jest przykładowo w Node.js, a aplikacja SPA vanilla JS.

Z klienta (aplikacji) jest tworzony token do servera z danymi logowania (Czy to server tworzy token dostępu? Jeśli tak dane logowania są wysyłane tylko przez samo https? metodą bruteforce wysyłając loginy i passy do api można utworzyć wiele tokenów dla użytkowników.).

Server tworzy owy token z certyfikatem, jak SPA lub aplikacja mobilna (cordova) z otwartym kodem ma sprawdzić poprawność certyfikatu jeśli w publicznym kodzie nie powinniśmy umieszczać sekretnego hasła do podpisu cyfrowego?

Jeśli to wciąż SPA tworzy token, jest dokładnie sam problem, żeby go stworzyć aby server mógł go sprawdzić sekretne hasło musi być umieszczone w kodzie, dostępnym.

Token jest generowany raz? Czy na każdy request a w nim dane?

 

Naprawdę byłbym wdzięczny za wytłumaczenie tego jak dziecku bo nie mogę zrozumieć jak to dokładnie działa.

1 odpowiedź

+3 głosów
odpowiedź 14 maja 2019 przez Ehlert Ekspert (212,790 p.)
wybrane 14 maja 2019 przez wsnofi
 
Najlepsza
  1. Klient wysyła do serwera dobry login i hasło.
  2. Serwer generuje jwt Access token oraz refresh token.
  3. Access token jest wysyłany przy każdym requeście do serwera w nagłówku http. Nie jest zapisany w bazie danych, a przynajmniej zgodnie ze standardem nie powinien być.
  4. Access token zawiera informacje dla którego użytkownika został wygenerowany. Ma też swój czas ważności.
  5. Kiedy czas ważności minie serwer informuje o tym aplikację a ta wysyła refresh token i otrzymuje dzięki temu nowy Access token.
  6. Refresh token jest zapisany w bazie i w razie kradzieży konta można go unieważnić. 

Oba te tokeny są kodowane base64, zawierają payload oraz header. Wszystkie muszą być podpisywane po stronie serwera, tak aby serwer przy każdym requeście weryfikował czy podpis się zgadza i czy dane w tokenie nie zostały zmienione.

komentarz 14 maja 2019 przez wsnofi Bywalec (2,680 p.)
Zrobiłem małą aplikację która działa w ten sposób i poprawiłem aby działała według logiki z twojego postu i jest to naprawdę świetne, wszystko działa jak powinno, obecnie czytam o refresh tokenach ponieważ stworzyłem tylko dostępowe (expire = destroy session/token).

 

Ale zastanawiam się, czy nie łatwiej byłoby po prostu wygenerować losowy ciąg znaków (~80 liczb) i po stronie servera przypisać do niego dane identyfikacyjne i zamiast narażania podpisów wysyłać sam token. JWT jest bardzo bezpieczne, ale losowy ciąg znaków i informacje po stronie servera także będą jeszcze bardziej oraz prostrze w kontroli, przynajmniej tak myślę, jeśli się mylę wyprowadź mnie z błędu.

I dzięki za powyższe wytłumaczenie, właśnie tego potrzebowałem.
komentarz 14 maja 2019 przez Ehlert Ekspert (212,790 p.)

Pierwszą złotą zasadą kryptografii jest: Nie rób sam kryptografii. laugh​​​​​​

Obecnie w PHP jest gotowa biblioteka to generowania tokenów JWT. 

https://github.com/firebase/php-jwt

komentarz 14 maja 2019 przez Ehlert Ekspert (212,790 p.)

Trzymanie jakichkolwiek informacji po stronie serwera automatycznie powoduje, że nie korzystasz z JWT. O tych tokenach serwer nie powinien pamiętać żadnych informacji. Z wyjątkiem klucza, który został użyty. To się nazywa stateless token.

Podobne pytania

0 głosów
2 odpowiedzi 775 wizyt
pytanie zadane 28 stycznia 2018 w PHP przez michal Mądrala (5,560 p.)
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 14 października 2019 w JavaScript przez awa Użytkownik (510 p.)
+2 głosów
2 odpowiedzi 207 wizyt
pytanie zadane 29 grudnia 2023 w JavaScript przez NediCC Nowicjusz (140 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...