• 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

VPS Starter Arubacloud
0 głosów
1,069 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,630 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,630 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,630 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 763 wizyt
pytanie zadane 28 stycznia 2018 w PHP przez michal Mądrala (5,560 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 14 października 2019 w JavaScript przez awa Użytkownik (510 p.)
+2 głosów
2 odpowiedzi 186 wizyt
pytanie zadane 29 grudnia 2023 w JavaScript przez NediCC Nowicjusz (140 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...