Jak korzystać z narzędzia
- 1Wklej token w pole – z prefiksem „Bearer” lub bez niego. Nagłówek i payload są dekodowane na bieżąco podczas wpisywania.
- 2Sprawdź wiersz statusu: pokazuje, czy token jest ważny, wygasł czy jeszcze nie jest ważny – na podstawie pól
expinbf. - 3Przeczytaj standardowe pola – wystawcę, podmiot, odbiorcę i czasy – ze znacznikami czasu pokazanymi jako daty w Twojej strefie czasowej.
- 4Aby sprawdzić podpis, wpisz współdzielony sekret dla tokenów
HS256albo wklej klucz publiczny lub zestaw JWK dlaRS256,ES256i innych algorytmów z parą kluczy.
Co jest w środku JWT
JSON Web Token to trzy części zakodowane w Base64URL i połączone kropkami: header.payload.signature. Nagłówek mówi, jak token jest podpisany, np. {"alg":"HS256","typ":"JWT"}. Payload zawiera pola (claims) – informacje o użytkowniku i tokenie, takie jak identyfikator użytkownika, role i czas wygaśnięcia. Podpis dowodzi, że dwie pierwsze części pochodzą od posiadacza klucza i nie zostały zmienione.
Base64URL to kodowanie, a nie szyfrowanie: każdy, kto ma token, może odczytać jego payload – dokładnie tak jak to narzędzie. Nigdy nie umieszczaj w JWT haseł ani innych sekretów. Jeśli zawartość musi pozostać poufna, wystawca powinien użyć zaszyfrowanego tokena (JWE), który ma pięć części i można go odczytać tylko właściwym kluczem.
Standardowe pola i wygasanie
RFC 7519 definiuje siedem zarejestrowanych pól. iss (issuer) wskazuje, kto utworzył token, sub (subject), kogo dotyczy – zwykle jest to identyfikator użytkownika – a aud (audience), dla jakiej usługi jest przeznaczony. exp (expiration time), nbf (not before) i iat (issued at) to znaczniki czasu w sekundach od 1 stycznia 1970 roku, a jti to unikalny identyfikator, dzięki któremu serwer może wykryć ponowne użycie tokena.
Serwer musi odrzucić token po czasie exp i przed czasem nbf. Krótki czas życia – dla tokenów dostępu często od 5 do 60 minut – ogranicza szkody w razie kradzieży tokena, dlatego aplikacje używają tokenów odświeżania (refresh tokens), aby uzyskiwać nowe.
Sprawdzanie podpisu
Dekodowanie pokazuje, co token deklaruje; tylko podpis mówi, czy można mu wierzyć. HS256, HS384 i HS512 używają współdzielonego sekretu znanego zarówno wystawcy, jak i serwerowi. RS256, PS256, ES256, EdDSA i podobne algorytmy używają pary kluczy: wystawca podpisuje kluczem prywatnym, a każdy może zweryfikować podpis kluczem publicznym. Dostawcy tożsamości publikują swoje klucze publiczne jako zestaw JWK, często pod adresem URL kończącym się na /.well-known/jwks.json.
Weryfikacja odbywa się lokalnie za pomocą Web Crypto API Twojej przeglądarki i nic, co wkleisz, nie jest nigdzie wysyłane. Mimo to ostrożnie obchodź się z sekretami produkcyjnymi – i pamiętaj, że do weryfikacji tokena nigdy nie jest potrzebny klucz prywatny, więc wklejaj tylko klucze publiczne.
Pytania i odpowiedzi
Czy wklejanie JWT tutaj jest bezpieczne?
Tak. Token jest dekodowany i weryfikowany w Twojej przeglądarce i nigdy nie trafia do nestoo ani do nikogo innego. Pamiętaj jednak, że ważny token dostępu działa jak tymczasowe hasło: każdy, kto go skopiuje, może go używać, dopóki nie wygaśnie, więc nie udostępniaj aktywnych tokenów na czatach ani w zgłoszeniach.
Czy JWT można zdekodować bez sekretu?
Tak. Nagłówek i payload są jedynie zakodowane w Base64URL, więc każdy może je odczytać bez klucza. Sekret lub klucz prywatny jest potrzebny do utworzenia prawidłowego podpisu, a sekret lub klucz publiczny – do jego weryfikacji.
Dlaczego mój token pokazuje „Nieprawidłowy podpis”?
Zwykle sekret lub klucz jest niewłaściwy: klucz z innego środowiska, sekret, który trzeba najpierw zdekodować z Base64, albo klucz publiczny z innym kid. Zdarza się to też, gdy token został zmieniony lub ucięty podczas kopiowania. W przypadku tokenów od dostawcy tożsamości użyj jego aktualnego zestawu JWK.
Czym różni się JWS od JWE?
JWS to podpisany token z trzema częściami: każdy może go odczytać, ale nikt nie może go zmienić bez unieważnienia podpisu. JWE to zaszyfrowany token z pięcioma częściami i tylko posiadacz klucza deszyfrującego może odczytać jego zawartość. Większość tokenów nazywanych JWT to JWS.
Co oznaczają exp, iat i nbf?
To czasy w sekundach od 1 stycznia 1970 roku, znane jako czas uniksowy (Unix time). exp to moment wygaśnięcia tokena, iat – moment jego wystawienia, a nbf – moment, przed którym nie wolno go akceptować. To narzędzie pokazuje je jako daty w Twojej strefie czasowej i podaje, ile czasu minęło od nich lub pozostało do nich.