Utilia

JWT-generaattori ja -tarkistin

Luo ja tarkista JSON Web Tokeneita HS256-, RS256-, PS256-, ES256- tai EdDSA-algoritmilla. Muokkaa kenttiä ja aseta exp selaimessasi.

Avaimet ja tokenit ovat salaisia. Kaikki allekirjoitetaan ja tarkistetaan paikallisesti selaimesi Web Crypto API:lla: mitään ei lähetetä palvelimelle.

Luo allekirjoitettu JWT

Aikakentät:

Tarkista JWT

Näin luot allekirjoitetun JWT:n

  1. Valitse Algoritmi: HS256/384/512 (jaettu salaisuus), RS256/384/512 tai PS256/384/512 (RSA), ES256/384/512 (ECDSA käyrillä P-256, P-384 tai P-521) tai EdDSA (Ed25519, kun selaimesi tukee sitä).
  2. Muokkaa kenttiä Otsake (JSON) ja Sisältö (JSON-kentät). Kenttä alg seuraa aina valittua algoritmia, ja typ on oletuksena JWT.
  3. Lisää päivämäärät aikakenttien painikkeilla: iat = nyt, nbf = nyt, tai valitse viive, kuten “1 tunnin päästä”, ja napsauta Aseta exp. Arvot ovat NumericDate-aikoja: sekunteja 1.1.1970 UTC:stä.
  4. Anna Salaisuus (HS-algoritmit, tekstinä tai Base64/Base64urlina kohdassa Salaisuuden muoto) tai Yksityinen avain (PEM tai JWK). Eikö avainta ole vielä? Napsauta Luo testiavain.
  5. Napsauta Allekirjoita token ja sitten Kopioi tulos tai napsauta Tarkista tämä token tarkistaaksesi sen heti.

Näin tarkistat JWT:n

  1. Liitä token kenttään Tarkistettava token.
  2. Valitse Odotettu algoritmi. Jos jätät valinnaksi “Tokenin otsakkeesta”, työkalu hyväksyy sen, mitä otsake väittää, paitsi none-algoritmin. Kun valitset tietyn algoritmin, työkalu hylkää kaikki muulla tavalla allekirjoitetut tokenit, aivan kuten oikean palvelimen pitääkin tehdä.
  3. Anna salaisuus tai Julkinen avain (PEM tai JWK): PUBLIC KEY-, RSA PUBLIC KEY- tai CERTIFICATE-PEM-lohko, JWK tai JWK Set (käytetään avainta, jonka kid vastaa otsakkeen arvoa).
  4. Voit halutessasi asettaa Kellon toleranssi (sekunteja) pienten kelloerojen sietämiseksi. Napsauta sitten Tarkista token.

Tulos kertoo, onko allekirjoitus kelvollinen, ja vertaa sen jälkeen exp-arvoa (vanheneminen) ja nbf-arvoa (ei voimassa ennen) tietokoneesi nykyiseen aikaan. Token, jonka allekirjoitus on oikea mutta vanhenemisaika on mennyt, ilmoitetaan vanhentuneeksi, ei kelvolliseksi.

Avaimet ja muodot

Allekirjoittamiseen työkalu hyväksyy PKCS#8 PRIVATE KEY -lohkot, PKCS#1 RSA PRIVATE KEY -lohkot ja SEC1 EC PRIVATE KEY -lohkot (muunnetaan sisäisesti PKCS#8:ksi) sekä yksityiset JWK:t. Salasanalla suojatut avaimet on ensin vietävä ulos ilman salasanaa. Luo testiavain tekee HS-algoritmeille satunnaisen salaisuuden, jonka pituus on sama kuin tiivisteen, RS- ja PS-algoritmeille 2048-bittisen RSA-avainparin, ES-algoritmeille sopivan käyrän avainparin ja EdDSA:lle Ed25519-avainparin. Saat avaimet PEM- ja JWK-muodossa, ja ne täytetään molemmille puolille, joten kokonaisuutta voi kokeilla heti.

Allekirjoitukset noudattavat standardeja RFC 7515 ja RFC 7518: RSA-PSS käyttää suolaa, joka on yhtä pitkä kuin tiiviste, ja ECDSA-allekirjoitukset ovat raakamuotoinen r||s-ketju. Toteutus tuottaa RFC 7515:n liitteen A.1 HS256-esimerkin.

Tietoturvahuomioita

  • Kaikki toimii selaimessasi Web Crypto API:lla. Tokeneita tai avaimia ei lähetetä minnekään, mutta käytä silti mieluummin testiavaimia kuin tuotantosalaisuuksia.
  • alg: none ei ole koskaan allekirjoitettu eikä sitä koskaan hyväksytä.
  • HMAC-salaisuuden pitäisi olla vähintään tiivisteen mittainen (32 tavua HS256:lle). Lyhyempi salaisuus aiheuttaa varoituksen.
  • Allekirjoitus todistaa eheyden ja alkuperän, ei sitä, että kentät ovat asianmukaisia: palvelimen on tarkistettava myös iss, aud ja oikeudet (scope).

Usein kysytyt kysymykset

Mitä eroa on HS256:lla ja RS256:lla?

HS256 käyttää yhtä jaettua salaisuutta sekä allekirjoitukseen että tarkistukseen, joten jokainen tarkistaja voisi myös väärentää tokeneita. RS256 (sekä PS256, ES256 ja EdDSA) allekirjoittaa yksityisellä avaimella ja tarkistaa julkisella avaimella, jonka voi turvallisesti julkaista.

Miksi kelvollinen allekirjoitus näyttää silti virheen?

Koska token on voimassaoloaikansa ulkopuolella: exp on menneisyydessä tai nbf tulevaisuudessa. Allekirjoituksen tarkistus ja aikatarkistus raportoidaan erikseen.

Miksi alg "none" hylätään?

Allekirjoittamattoman tokenin voi luoda kuka tahansa. Sen hyväksyminen oli JWT-kirjastojen klassinen haavoittuvuus, joten tämä työkalu hylkää sen sekä allekirjoitettaessa että tarkistettaessa.

Voinko käyttää omaa RSA- tai EC-avaintani?

Kyllä. Liitä yksityinen avain PEM- tai JWK-muodossa allekirjoittaaksesi ja julkinen avain tarkistaaksesi. Työkalu varmistaa, että avaintyyppi ja käyrä vastaavat valittua algoritmia.

Miksi EdDSA ei ole käytettävissä?

Selaimesi ei vielä tue Ed25519:ää Web Cryptossa. Chromen, Edgen, Firefoxin ja Safarin uudet versiot tukevat sitä.