Hogyan használd?
- Válaszd ki az algoritmust (HS256, RS256, ES256, EdDSA…).
- Írd meg a tartalmat JSON-ban; az iat és exp gombokkal beállíthatod a kiállítás és a lejárat idejét.
- Add meg a titkot (HS) vagy a privát kulcsot PEM vagy JWK formában.
- Kattints az „Token aláírása” gombra, majd nyisd meg a dekódolóban, vagy másold ki.
Melyik algoritmust válaszd?
| Algoritmus | Kulcs | Mikor |
|---|---|---|
| HS256/384/512 | közös titok | ha ugyanaz a szerver ad ki és ellenőriz |
| RS256/384/512 | RSA kulcspár | elterjedt, OAuth/OpenID szolgáltatók alapja |
| PS256/384/512 | RSA kulcspár | az RS modernebb (PSS) változata |
| ES256/384/512 | EC kulcspár (P-256/384/521) | rövid aláírás, gyors |
| EdDSA | Ed25519 kulcspár | a legmodernebb, gyors és biztonságos |
HS-nél az RFC 7518 szerint a titok legyen legalább akkora, mint a hash: HS256-hoz 32 bájt. Rövidebb titoknál figyelmeztetünk.
Kulcsformátumok
Privát kulcsként elfogadjuk a PEM-et (-----BEGIN PRIVATE KEY-----, a régi RSA PRIVATE KEY és EC PRIVATE KEY alakot is) és a JWK-t. Tesztkulcsot helyben, OpenSSL-lel így készíthetsz:
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out key.pem
openssl genpkey -algorithm ed25519 -out key.pem
A motorunkat az RFC 7515 és RFC 8037 mintatokenjeivel, valamint a Node.js saját kriptográfiájával szemben teszteltük: mind a 13 algoritmus oda-vissza egyezik.
Biztonság
- A kulcs nem kerül a megosztható linkbe, és nem mentjük el (localStorage-be sem).
- A JWT tartalma nem titkos: bárki elolvashatja, aki megkapja. Jelszót, kártyaszámot ne tegyél bele.
- Éles kulcsot csak akkor használj, ha muszáj; teszteléshez készíts külön kulcspárt.
A kész tokent a JWT dekódolóban ellenőrizheted, a nyilvános kulccsal.
Gyakori kérdések
Hogyan készítek JWT tokent?
Add meg a fejlécet, a tartalmat és a kulcsot, és a generátor Base64URL-kódolja, majd aláírja.
Elküldi a kulcsomat valahova?
Nem. Az aláírás a böngésződ WebCrypto-motorjában történik.
Milyen kulcsformátum kell RS256-hoz?
PEM (PRIVATE KEY vagy RSA PRIVATE KEY) vagy JWK.
Működik az EdDSA?
Igen, az Ed25519 friss Chrome-ban, Firefoxban és Safariban támogatott.