tigtools

Generator JWT

Zbuduj i podpisz token JWT do testów lub sprawdź, czy podpis HMAC tokenu pasuje do sekretu. Podpisywanie używa interfejsu Web Crypto API w przeglądarce.

Działa w przeglądarce Bez rejestracji

Tryb
Sekret pozostaje na tej karcie przeglądarki i nigdy nie jest nigdzie wysyłany. Mimo to nie wklejaj produkcyjnych sekretów do podpisywania na żadnej stronie: każdy, kto zna sekret, może tworzyć ważne tokeny dla Twojego systemu. Używaj tutaj sekretów testowych.

alg jest ustawiane z menu algorytmu; typ domyślnie to JWT.

Deklaracje takie jak sub, iat i exp. Czasy są w sekundach od 1970 r. (UTC).

Wpisz sekret, aby podpisać token.

Jak używać

  1. Wybierz HS256, HS384 lub HS512.
  2. Edytuj zawartość ładunku i kliknij „Ustaw iat i exp”, aby dodać bieżący czas i czas wygaśnięcia.
  3. Wpisz sekret testowy lub wygeneruj losowy sekret 256-bitowy.
  4. Skopiuj podpisany token. Aby sprawdzić token, przełącz się na „Weryfikacja podpisu”, wklej go i wpisz sekret.

Jak to działa

JSON Web Token (RFC 7519) składa się z trzech części kodowanych w Base64URL: nagłówka, ładunku z oświadczeniami i podpisu. W przypadku algorytmów HMAC HS256, HS384 i HS512 podpis to HMAC z SHA-256, SHA-384 lub SHA-512 obliczony na ciągu „header.payload”, z kluczem będącym wspólnym sekretem. Każdy, kto zna sekret, może tworzyć i weryfikować tokeny.

Narzędzie serializuje nagłówek i ładunek jako kompaktowy JSON, koduje je i podpisuje za pomocą crypto.subtle, czyli interfejsu Web Crypto API wbudowanego w przeglądarkę. Pole alg w nagłówku zawsze odpowiada wybranemu algorytmowi, pole typ domyślnie ma wartość JWT, a pozostałe pola nagłówka, takie jak kid, są zachowywane. Polecenie „Ustaw iat i exp” zapisuje bieżący czas jako iat (czas wystawienia) i dodaje wybrany czas życia jako exp; obie wartości są wyrażone w sekundach od 1 stycznia 1970 r. UTC. Wynik jest zgodny z innymi bibliotekami JWT; na przykład klasyczny przykładowy token z jwt.io jest odtwarzany dokładnie.

Sekret może być zwykłym tekstem (jego bajty UTF-8 są kluczem) lub bajtami zakodowanymi w Base64/Base64URL, co jest używane w wielu frameworkach. Przycisk losowego sekretu tworzy 32 losowe bajty za pomocą crypto.getRandomValues. W przypadku HS256 używaj co najmniej 32 losowych bajtów; krótkie sekrety wybrane przez człowieka można odgadnąć offline na podstawie dowolnego tokenu.

Weryfikacja dekoduje token, sprawdza, czy używa algorytmu HMAC, i ponownie oblicza podpis za pomocą crypto.subtle.verify. Pokazuje też, kiedy wartości exp lub nbf oznaczają, że token wygasł albo nie jest jeszcze ważny. Algorytmy z kluczem publicznym, takie jak RS256, ES256 i inne, nie są obsługiwane, a weryfikacja tutaj nie sprawdza wystawcy, odbiorców ani innych oświadczeń, których może wymagać Twoja aplikacja.

Przykłady

Testowanie API lokalnie

Twój serwer developerski oczekuje tokenów HS256 podpisanych sekretem „dev-secret-change-me”. Ustaw sub na identyfikator użytkownika testowego, kliknij „Ustaw iat i exp” z czasem 1 godzina, wpisz sekret i wyślij token w nagłówku Authorization: Bearer.

Sprawdzanie, którym sekretem podpisano token

Token stagingowy jest odrzucany. Wklej go w sekcji „Weryfikacja podpisu” i wypróbuj sekret stagingowy: komunikat „Podpis nieprawidłowy” oznacza, że token został podpisany innym sekretem albo sekret ma inny format (tekst zamiast Base64).

Odtwarzanie przykładu z jwt.io

Przy nagłówku {"alg":"HS256","typ":"JWT"}, ładunku {"sub":"1234567890","name":"John Doe","iat":1516239022} i sekrecie „your-256-bit-secret” token kończy się na SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, tak samo jak na jwt.io.

Często zadawane pytania

Czy mój sekret jest wysyłany na Wasz serwer?

Nie. Podpisywanie i weryfikacja odbywają się za pomocą Web Crypto API w przeglądarce, a sekret nie jest nigdzie przechowywany ani wysyłany. Zalecamy jednak korzystanie wyłącznie z sekretów testowych, ponieważ prawdziwego sekretu do podpisywania nie należy nigdy wpisywać na stronie internetowej.

Dlaczego podpis jest nieprawidłowy, mimo że sekret jest poprawny?

Sprawdź format sekretu. Niektóre systemy używają tekstu sekretu, inne najpierw dekodują go z Base64, co daje inne bajty klucza. Sprawdź też, czy token nie został zmieniony i czy używa tego samego algorytmu.

Czy mogę utworzyć tokeny RS256 lub ES256?

Nie w tym narzędziu. Obsługuje ono tylko algorytmy HMAC ze wspólnym sekretem: HS256, HS384 i HS512.

Czy ładunek jest szyfrowany?

Nie. Podpisany JWT jest tylko zakodowany; każdy może go odkodować i odczytać ładunek. Podpis jedynie potwierdza, że nie został zmieniony. Nie umieszczaj w ładunku haseł ani innych poufnych danych.

Prywatność

Tokeny są tworzone i weryfikowane wyłącznie w przeglądarce za pomocą Web Crypto API. Nagłówek, ładunek, token i sekret nie są przesyłane, przechowywane ani uwzględniane w statystykach.