Mis see tööriist on?
JWT (JSON Web Token) on kompaktne, URL-turvaline string, mida kasutatakse väidete edastamiseks kahe osapoole vahel — kõige sagedamini autentimise tokenina pärast sisselogimist. Sellel on kolm punktiga eraldatud osa: päis (algoritm ja tokeni tüüp), sisu (tegelikud väited — kasutaja ID, rollid, aegumine jne) ja allkiri (mida server kasutab kontrollimaks, et tokenit pole muudetud).
Päis ja sisu on lihtsalt Base64URL-kodeeritud JSON — mitte krüpteeritud —, seega saab neid dekodeerida ja lugeda ilma salajase võtmeta. Ainult allkirja kontrollimine nõuab salajast võtit. Täpselt seda see tööriist teebki: dekodeerib loetavad osad ja näitab neid vormindatud JSON-ina, ilma allkirja kontrollimata.
JWT-d on standarditud dokumendis RFC 7519, allkirjakiht (JWS) on eraldi määratletud dokumendis RFC 7515 — kasulikud viited, kui vajad ametlikku loetelu registreeritud väidetest nagu exp, iat, sub ja aud.
Miks seda kasutada?
- Koheselt loetav päis ja sisu, vormindatud JSON-ina — enam pole vaja stringi käsitsi tükeldada ja Base64 dekodeerida.
- Automaatne aegumiskontroll: kui sisus on "exp" väide, teisendatakse see loetavaks kuupäevaks ja märgistatakse aegunuks või kehtivaks.
- Ühe klõpsuga kopeerimine päisele ja sisule eraldi.
- 100% brauseripoolne — token dekodeeritakse kohapeal ega edastata kuhugi, ohutu kasutada isegi toodangukeskkonna tokenitega.
- Allkirja ei kontrollita ega väideta kontrollituks — see on silumis-/uurimistööriist, mitte valideerija.
Kuidas kasutada
- Kleebi oma JWT kasti (kogu string, kaasa arvatud kõik kolm punktiga eraldatud osa).
- Päis ja sisu dekodeeritakse automaatselt, kui kirjutad.
- Kontrolli aegumisrida, kui tokenil on "exp" väide — see näitab täpset kuupäeva ja kas token on aegunud.
- Klõpsa "Copy" kummagi kasti all, et kopeerida see osa JSON-ina.
Näide
Sisend
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQTulemus
Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}Allkirja (kolmas osa) ei dekodeerita ega kontrollita kunagi — see on läbipaistmatu räsi, mida serveripoolselt kasutatakse ehtsuse kontrollimiseks.
Praktilised nõuanded
- "Kehtetu token" vigade silumine: dekodeeri kõigepealt sisu, et kontrollida "exp" väidet — aegunud token on kõige levinum põhjus ega ole alati veateatest üksi ilmne.
- Kolmanda osapoole API tokeni tegeliku sisu kontrollimine: paljud API-d tagastavad läbipaistmatu näivusega JWT ligipääsutokeni — dekodeeri see siin, et näha, milliseid õigusi, kasutaja ID-d või aegumist su integratsioon tegelikult saab.
- Ära kunagi eelda, et JWT on krüpteeritud: kui näed arendustöö käigus dekodeeritud sisus tundlikke andmeid (e-post, sisemised ID-d), on see märk, et need andmed tuleks viia serveripoolseks, mitte usaldada, et klient neid ei loe.
Levinud väited, mida sisus näed
| Väide | Tähendus |
|---|---|
| sub | Subjekt — tavaliselt kasutaja ID, keda token esindab |
| exp | Aegumisaeg (Unix-ajatempel) — token pole pärast seda enam kehtiv |
| iat | Väljastatud (issued at) — millal token loodi |
| iss | Väljastaja — milline teenus/server tokeni väljastas |
| aud | Auditoorium — millisele teenusele token on mõeldud |
| role / roles / scope | Kohandatud väited — kasutajale antud õigused või rollid (pole ametliku JWT standardi osa, kuid äärmiselt levinud) |
Korduma kippuvad küsimused
Kas see tööriist kontrollib JWT allkirja?
Ei. Allkirja kontrollimine nõuab salajast või avalikku võtit, millega token allkirjastati — see on ainult väljastanud serveril. See tööriist dekodeerib ainult päise ja sisu — inimloetavad osad —, nii et saad väiteid ja aegumist uurida ilma ühtegi võtit vajamata.
Kas on ohutu kleepida siia päris toodangukeskkonna JWT?
Dekodeerimine toimub täielikult sinu brauseris JavaScripti abil — tokenit ei saadeta ühelegi serverile, ka mitte meie omale. Sellegipoolest kohtle tokeneid nagu paroole: ära kleebi neid tööriistadesse, mida sa ei usalda, ja väldi tundlikke väiteid sisaldavate dekodeeritud tokenite ekraanipiltide jagamist.
Miks saab igaüks lugeda mu JWT sisu ilma paroolita?
Nii on see disainitud — JWT päis ja sisu on Base64URL-kodeeritud, mitte krüpteeritud. Kodeerimine ei ole turvalisus, see lihtsalt teeb JSON-i URL-i jaoks sobivaks edastamiseks. Ära kunagi pane saladusi (paroole, krediitkaardinumbreid) otse JWT sisusse — eelda, et igaüks, kellel on token, saab selle sisu lugeda.
Mida tähendab "exp" väide ja miks see oluline on?
"exp" on tokeni aegumisaeg Unix-ajatemplina (sekundites alates 1970. aastast). Serverid lükkavad JWT tagasi, kui see aeg on möödas, sundides klienti uuesti autentima. See tööriist teisendab selle loetavaks kuupäevaks ja märgistab, kas see on juba aegunud — kasulik "miks mu seanss välja logiti" tüüpi probleemide silumisel.
Miks näitab mu token JSON-parsimise viga?
Kas string pole kehtiv JWT (peab olema täpselt kolm punktiga eraldatud osa), või on see katkine või muudetud — levinud põhjus on token, mis on kogemata jagatud mitmele reale või kopeerimisel jäänud lõpumärgid puudu.