tigtools

Generator JWT

Generați și semnați un JSON Web Token pentru testare sau verificați dacă semnătura HMAC a unui token corespunde unui secret. Semnarea folosește Web Crypto API din browserul dumneavoastră.

Rulează în browser Fără înregistrare

Mod
Secretul rămâne în această filă de browser și nu este trimis nicăieri. Chiar și așa, nu introduceți secrete de semnare de producție pe niciun site web: oricine are secretul poate crea tokenuri valide pentru sistemul dvs. Folosiți aici secrete de test.

alg este setat din meniul de algoritm; typ este implicit JWT.

Claims precum sub, iat și exp. Timpii sunt exprimați în secunde de la 1970 (UTC).

Introduceți un secret pentru a semna tokenul.

Cum se folosește

  1. Alegeți HS256, HS384 sau HS512.
  2. Editați claim-urile payload-ului și faceți clic pe „Setați iat și exp” pentru a adăuga ora curentă și o expirare.
  3. Introduceți un secret de test sau generați unul aleatoriu de 256 de biți.
  4. Copiați tokenul semnat. Pentru a verifica un token, comutați la „Verifică semnătura”, lipiți-l și introduceți secretul.

Cum funcționează

Un JSON Web Token (RFC 7519) are trei părți codificate Base64URL: un antet, un payload cu claimuri și o semnătură. Cu algoritmii HMAC HS256, HS384 și HS512, semnătura este un HMAC cu SHA-256, SHA-384 sau SHA-512 peste „header.payload”, folosind un secret partajat. Oricine deține secretul poate crea și verifica tokenuri.

Instrumentul serializează antetul și payload-ul ca JSON compact, le codifică și le semnează cu crypto.subtle, API-ul Web Crypto integrat în browserul dvs. Câmpul alg din antet corespunde întotdeauna algoritmului ales, typ are implicit valoarea JWT, iar orice alte câmpuri de antet, cum ar fi kid, sunt păstrate. Opțiunea „Set iat and exp” scrie ora curentă ca iat (emis la) și adaugă durata de viață aleasă ca exp, ambele în secunde de la 1 ianuarie 1970 UTC. Rezultatul corespunde altor biblioteci JWT; de exemplu, tokenul de probă clasic de pe jwt.io este reprodus exact.

Secretul poate fi text simplu (octeții săi UTF-8 reprezintă cheia) sau octeți codificați Base64/Base64URL, pe care multe framework-uri le folosesc. Butonul de secret aleatoriu creează 32 de octeți aleatori cu crypto.getRandomValues. Pentru HS256, folosiți cel puțin 32 de octeți aleatori; secretele scurte alese de oameni pot fi ghicite offline din orice token.

Verificarea decodează tokenul, verifică dacă folosește un algoritm HMAC și recalculează semnătura cu crypto.subtle.verify. De asemenea, arată când exp sau nbf indică faptul că tokenul a expirat sau nu este încă valid. RS256, ES256 și alți algoritmi cu chei publice nu sunt acceptați, iar verificarea de aici nu verifică emitentul, audiența sau alte claimuri pe care aplicația dvs. le poate solicita.

Exemple

Testarea locală a unui API

Serverul dvs. de dezvoltare așteaptă tokenuri HS256 semnate cu „dev-secret-change-me”. Setați sub la un ID de utilizator de test, faceți clic pe „Set iat and exp” cu 1 oră, introduceți secretul și trimiteți tokenul într-un antet Authorization: Bearer.

Verificarea secretului cu care a fost semnat un token

Un token de staging este respins. Lipiți-l în „Verifică semnătura” și încercați secretul de staging: „Semnătura nu este validă” vă spune că tokenul a fost semnat cu un alt secret sau că secretul este într-un format diferit (text vs Base64).

Reproducerea exemplului jwt.io

Cu antetul {"alg":"HS256","typ":"JWT"}, payload-ul {"sub":"1234567890","name":"John Doe","iat":1516239022} și secretul „your-256-bit-secret”, tokenul se termină cu SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, la fel ca pe jwt.io.

Întrebări frecvente

Este secretul meu trimis către serverul dumneavoastră?

Nu. Semnarea și verificarea rulează cu Web Crypto API în browserul dumneavoastră, iar secretul nu este stocat și nici trimis nicăieri. Totuși, recomandăm să folosiți doar secrete de test, deoarece un secret real de semnare nu ar trebui introdus niciodată pe un site web.

De ce este semnătura invalidă, deși secretul este corect?

Verificați formatul secretului. Unele sisteme folosesc textul secretului, altele îl decodează mai întâi din Base64, ceea ce generează octeți de cheie diferiți. Verificați, de asemenea, că tokenul nu a fost modificat și că folosește același algoritm.

Pot crea tokenuri RS256 sau ES256?

Nu cu acest instrument. Suportă doar algoritmii HMAC cu secret partajat HS256, HS384 și HS512.

Este payload-ul criptat?

Nu. Un JWT semnat este doar codificat; oricine îl poate decoda și citi payload-ul. Semnătura doar dovedește că nu a fost modificat. Nu introduceți parole sau alte secrete în payload.

Confidențialitate

Tokenurile sunt create și verificate doar în browserul dumneavoastră, cu Web Crypto API. Antetul, payload-ul, tokenul și secretul nu sunt încărcate, stocate sau incluse în datele de analiză.