Skip to main content
CheckTown
Narzędzia dev

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 używany do bezpiecznego przesyłania informacji między stronami jako obiekt JSON. JWT składa sie z trzech części zakodowanych w Base64URL oddzielonych kropkami: nagłówek.ładunek.podpis.

JWT umożliwiają uwierzytelnianie bezstanowe — serwer nie musi przechowywac danych sesji, poniewaz wszystkie niezbędne informacje sa osadzone w samym tokenie.

Struktura JWT

Każdy JWT składa sie z trzech odrebnych części:

  • Nagłówek (Header) — obiekt JSON określający typ tokenu (typ: JWT) i algorytm podpisu (alg: HS256, RS256 itp.)
  • Ładunek (Payload) — obiekt JSON zawierający roszczenia: iss (wystawca), sub (podmiot), exp (wygaśnięcie), iat (data wydania) i dowolne dane niestandardowe
  • Podpis (Signature) — tworzony przez podpisanie zakodowanego nagłówka i ładunku kluczem tajnym (HMAC) lub prywatnym (RSA/ECDSA)

Ładunek nie jest szyfrowany — każdy moze go zdekodowac i odczytac. Nigdy nie przechowuj poufnych danych w ładunku JWT.

Algorytmy podpisu

Wybor algorytmu podpisu określa sposob tworzenia i weryfikacji podpisu JWT:

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

Dla większości aplikacji webowych HS256 jest wystarczający. 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 nagłówka, ładunku 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 stały sie standardem wspolczesnego uwierzytelniania i autoryzacji:

  • Uwierzytelnianie API — klienci dołączają JWT w nagłówku Authorization (Bearer token) z każdym żądaniem
  • Tokeny dostępu OAuth 2.0 — dostawcy OAuth wydaja JWT jako tokeny dostępu z informacjami o zakresie i uprawnieniach
  • Komunikacja między mikroserwisami — usługi przekazuja JWT między soba w celu propagacji tożsamości użytkownika
  • Jednokrotne logowanie (SSO) — centralny dostawca tożsamości wydaje JWT akceptowany przez wiele aplikacji

Najlepsze praktyki bezpieczeństwa

JWT sa potężne, ale wymagaja ostrożnej implementacji:

  • Ustaw krotkie czasy wygaśnięcia — używaj roszczen exp od 15 minut do 1 godziny
  • Nigdy nie przechowuj wrażliwych danych w ładunku
  • Zawsze waliduj wszystkie roszczenia
  • Używaj wyłącznie HTTPS
  • Odrzucaj algorytm "none"

Często zadawane pytania

Jaka jest różnica między 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 odświeżania.

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 poniżej 4 KB.

Powiązane narzędzia