Skip to main content
CheckTown
Dev Tools

JWT Encoder: Tworzenie i podpisywanie JSON Web Tokens do uwierzytelniania

Opublikowano 7 min czytania
W tym artykule

Czym jest JWT?

JSON Web Token (JWT) to kompaktowy, bezpieczny dla URL format tokenow uzywany do bezpiecznego przesylania informacji miedzy stronami jako obiekt JSON. JWT sklada sie z trzech czesci zakodowanych w Base64URL oddzielonych kropkami: naglowek.ladunek.podpis.

JWT umozliwiaja uwierzytelnianie bezstanowe — serwer nie musi przechowywac danych sesji, poniewaz wszystkie niezbedne informacje sa osadzone w samym tokenie.

Struktura JWT

Kazdy JWT sklada sie z trzech odrebnych czesci:

  • Naglowek (Header) — obiekt JSON okreslajacy typ tokenu (typ: JWT) i algorytm podpisu (alg: HS256, RS256 itp.)
  • Ladunek (Payload) — obiekt JSON zawierajacy roszczenia: iss (wystawca), sub (podmiot), exp (wygasniecie), iat (data wydania) i dowolne dane niestandardowe
  • Podpis (Signature) — tworzony przez podpisanie zakodowanego naglowka i ladunku kluczem tajnym (HMAC) lub prywatnym (RSA/ECDSA)

Ladunek nie jest szyfrowany — kazdy moze go zdekodowac i odczytac. Nigdy nie przechowuj poufnych danych w ladunku JWT.

Algorytmy podpisu

Wybor algorytmu podpisu okresla sposob tworzenia i weryfikacji podpisu JWT:

  • HMAC (HS256, HS384, HS512) — algorytmy symetryczne uzywajace tego samego klucza tajnego do podpisu i weryfikacji
  • RSA (RS256, RS384, RS512) — algorytmy asymetryczne uzywajace klucza prywatnego do podpisu i publicznego do weryfikacji
  • ECDSA (ES256, ES384, ES512) — algorytmy asymetryczne wykorzystujace kryptografie krzywych eliptycznych

Dla wiekszosci aplikacji webowych HS256 jest wystarczajacy. Wybierz RS256 lub ES256, gdy tokeny musza byc weryfikowane przez strony trzecie.

Wypróbuj za darmo — bez rejestracji

Utworz i podpisz JWT →

Kodowanie a dekodowanie

Kodowanie JWT oznacza tworzenie nowego tokenu przez zlozenie naglowka, ladunku i wygenerowanie podpisu za pomoca klucza tajnego lub prywatnego.

Dekodowanie JWT moze oznaczac ekstrakcje roszczen bez weryfikacji podpisu lub pelna weryfikacje podpisu. Systemy produkcyjne powinny zawsze weryfikowac podpis.

Typowe zastosowania

JWT staly sie standardem wspolczesnego uwierzytelniania i autoryzacji:

  • Uwierzytelnianie API — klienci dolaczaja JWT w naglowku Authorization (Bearer token) z kazdym zadaniem
  • Tokeny dostepu OAuth 2.0 — dostawcy OAuth wydaja JWT jako tokeny dostepu z informacjami o zakresie i uprawnieniach
  • Komunikacja miedzy mikroserwisami — uslugi przekazuja JWT miedzy soba w celu propagacji tozsamosci uzytkownika
  • Jednokrotne logowanie (SSO) — centralny dostawca tozsamosci wydaje JWT akceptowany przez wiele aplikacji

Najlepsze praktyki bezpieczenstwa

JWT sa potezne, ale wymagaja ostroznej implementacji:

  • Ustaw krotkie czasy wygasniecia — uzywaj roszczen exp od 15 minut do 1 godziny
  • Nigdy nie przechowuj wrażliwych danych w ladunku
  • Zawsze waliduj wszystkie roszczenia
  • Uzywaj wylacznie HTTPS
  • Odrzucaj algorytm "none"

Czesto zadawane pytania

Jaka jest roznica miedzy JWT a ciasteczkami sesji?

Ciasteczka sesji przechowuja identyfikator sesji na kliencie, a dane sesji na serwerze. JWT sa samowystarczalne — wszystkie dane sa w samym tokenie.

Jak uniewaznić JWT przed wygasnieciem?

Poniewaz JWT sa bezstanowe, nie ma wbudowanego mechanizmu unieważniania. Popularne strategie obejmuja czarne listy tokenow i rotacje tokenow odswiezania.

Czy istnieje limit rozmiaru JWT?

Nie ma formalnego limitu, ale praktyczne ograniczenia istnieja — wiekszość serwerów HTTP ogranicza naglówki do 8 KB. Zaleca sie utrzymywanie tokenów ponizej 4 KB.

Powiązane narzędzia