Utilia

Generator i weryfikator JWT

Twórz i weryfikuj tokeny JWT z HS256, RS256, PS256, ES256 lub EdDSA. Edytuj claimy, ustaw exp i iat oraz sprawdzaj podpisy lokalnie w przeglądarce.

Klucze i tokeny to sekrety. Wszystko jest podpisywane i weryfikowane lokalnie przez Web Crypto twojej przeglądarki: nic nie jest wysyłane.

Utwórz podpisany JWT

Daty w tokenie:

Zweryfikuj JWT

Jak utworzyć podpisany JWT

  1. Wybierz Algorytm: HS256/384/512 (wspólny sekret), RS256/384/512 lub PS256/384/512 (RSA), ES256/384/512 (ECDSA na krzywych P-256, P-384 lub P-521) albo EdDSA (Ed25519, jeśli obsługuje go twoja przeglądarka).
  2. Edytuj Nagłówek (JSON) i Ładunek (claimy JSON). Pole alg zawsze odpowiada wybranemu algorytmowi, a typ domyślnie ma wartość JWT.
  3. Przyciskami dat dodasz znaczniki czasu: iat = teraz, nbf = teraz albo wybierz okres, np. „za 1 godzinę”, i kliknij Ustaw exp. Wartości to NumericDate, czyli sekundy od 1 stycznia 1970 r. UTC.
  4. Wpisz Sekret (dla algorytmów HS, jako tekst lub Base64/Base64url – wybierasz to w polu Format sekretu) albo Klucz prywatny (PEM lub JWK). Nie masz jeszcze klucza? Kliknij Generuj klucz testowy.
  5. Kliknij Podpisz token, a następnie Kopiuj wynik albo Zweryfikuj ten token, aby od razu go sprawdzić.

Jak zweryfikować JWT

  1. Wklej token w pole Token do weryfikacji.
  2. Wybierz Oczekiwany algorytm. Opcja „Z nagłówka tokena” przyjmuje to, co podaje nagłówek – z wyjątkiem none. Wybór konkretnego algorytmu sprawia, że narzędzie odrzuci każdy token podpisany inaczej, tak jak powinien zrobić prawdziwy serwer.
  3. Podaj sekret albo Klucz publiczny (PEM lub JWK): blok PEM PUBLIC KEY, RSA PUBLIC KEY lub CERTIFICATE, pojedynczy JWK lub JWK Set (używany jest klucz, którego kid pasuje do nagłówka).
  4. Opcjonalnie ustaw Tolerancja zegara (sekundy), aby wybaczyć drobne różnice czasu, i kliknij Zweryfikuj token.

Wynik mówi, czy podpis jest poprawny, a następnie porównuje exp (wygaśnięcie) i nbf (ważny od) z bieżącym czasem twojego komputera. Token z poprawnym podpisem, ale datą wygaśnięcia w przeszłości, zostanie oznaczony jako wygasły, a nie jako ważny.

Klucze i formaty

Do podpisywania narzędzie przyjmuje bloki PKCS#8 PRIVATE KEY, PKCS#1 RSA PRIVATE KEY i SEC1 EC PRIVATE KEY (wewnętrznie konwertowane do PKCS#8) oraz prywatne JWK. Klucze chronione hasłem trzeba najpierw wyeksportować bez hasła. Generuj klucz testowy tworzy losowy sekret o długości skrótu dla algorytmów HS, parę kluczy RSA 2048 bitów dla RS i PS, klucz na odpowiedniej krzywej dla ES albo parę Ed25519. Dostajesz klucze jako PEM i JWK, a narzędzie wpisuje je po obu stronach, więc pełny cykl podpis–weryfikacja działa od razu.

Podpisy są zgodne z RFC 7515 i RFC 7518: RSA-PSS używa soli o długości skrótu, a podpisy ECDSA to surowe połączenie r||s. Implementacja odtwarza przykład HS256 z RFC 7515, dodatek A.1.

Uwagi dotyczące bezpieczeństwa

  • Wszystko działa w twojej przeglądarce przez Web Crypto API. Ani tokeny, ani klucze nie są nigdzie wysyłane, ale i tak lepiej używać kluczy testowych niż sekretów produkcyjnych.
  • alg: none nigdy nie jest podpisywany ani akceptowany.
  • Sekrety HMAC powinny być co najmniej tak długie jak skrót (32 bajty dla HS256). Krótszy sekret wywołuje ostrzeżenie.
  • Podpis potwierdza integralność i pochodzenie, a nie to, że claimy są właściwe: serwer musi też sprawdzić iss, aud i uprawnienia (scopes).

Najczęściej zadawane pytania

Czym różni się HS256 od RS256?

HS256 używa jednego wspólnego sekretu zarówno do podpisu, jak i do weryfikacji, więc każdy weryfikator mógłby też podrabiać tokeny. RS256 (a także PS256, ES256 i EdDSA) podpisuje kluczem prywatnym, a weryfikuje kluczem publicznym, który można bezpiecznie opublikować.

Dlaczego poprawny podpis nadal pokazuje błąd?

Bo token jest poza okresem ważności: exp jest w przeszłości albo nbf w przyszłości. Wynik sprawdzenia podpisu i sprawdzenia dat jest raportowany osobno.

Dlaczego alg „none” jest odrzucany?

Niepodpisany token może utworzyć każdy. Akceptowanie go było klasyczną luką bibliotek JWT, dlatego to narzędzie odrzuca go zarówno przy podpisywaniu, jak i przy weryfikacji.

Czy mogę użyć własnego klucza RSA lub EC?

Tak. Wklej klucz prywatny jako PEM lub JWK, aby podpisać, i klucz publiczny, aby zweryfikować. Narzędzie sprawdza, czy typ klucza i krzywa pasują do wybranego algorytmu.

Dlaczego EdDSA jest wyłączone?

Twoja przeglądarka nie obsługuje jeszcze Ed25519 w Web Crypto. Obsługują go aktualne wersje Chrome, Edge, Firefoksa i Safari.