Skratka JWT znamená “JSON Web Token”, čo je kompaktný, bezpečný formát na prenos informácií medzi stranami ako JSON objekt. Používa sa predovšetkým na autentifikáciu a autorizáciu.
Základné vlastnosti JWT:
1.Kompaktnosť: Je malý, vhodný na prenos cez URL, HTTP hlavičky alebo uloženie ako cookie.
2.Samostatnosť: Obsahuje všetky potrebné informácie na overenie bez potreby ďalších databázových dotazov.
3.Bezpečnosť: Môže byť podpísaný (pomocou HMAC alebo RSA) na zabezpečenie integrity a autenticity údajov.
Štruktúra JWT:
JWT sa skladá z troch častí, oddelených bodkami (.):
1.Header (Hlavička): Obsahuje typ tokenu a použitý algoritmus na podpis.
2.Payload (Obsah): Obsahuje údaje (claims), ktoré sa prenášajú.
3.Signature (Podpis): Slúži na zabezpečenie integrity tokenu.
Príklad JWT tokenu:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
1. Header (kódovaný v Base64):
{
“alg”: “HS256”,
“typ”: “JWT”
}
2. Payload (kódovaný v Base64):
{
“sub”: “1234567890”,
“name”: “John Doe”,
“iat”: 1516239022
}
3. Signature (podpis):
Generuje sa takto:
HMACSHA256(
base64UrlEncode(header) + “.” + base64UrlEncode(payload),
secret
)
Použitie JWT:
1.Autentifikácia:
•Prihlásený používateľ dostane JWT token, ktorý sa posiela s každou požiadavkou na server.
2.Autorizácia:
•Na základe údajov v JWT server rozhodne, či má používateľ povolený prístup k zdrojom.
3.Prenos dát:
•Bezpečný prenos dát medzi stranami s overiteľnou integritou.
Príklad použitia JWT:
1.Používateľ sa prihlási (meno a heslo).
2.Server vygeneruje JWT a odošle ho používateľovi.
3.Pri každej ďalšej požiadavke klient pošle JWT v hlavičke:
Authorization: Bearer <JWT_TOKEN>
4.Server overí podpis a spracuje požiadavku.
Výhody:
•Bez stavu: Server nemusí ukladať tokeny, všetko je obsiahnuté v JWT.
•Rýchlosť: Rýchlejšie ako tradičné metódy autentifikácie.
Nevýhody:
•Ak je JWT kompromitovaný, platnosť môže byť zneužitá, ak token ešte nevypršal.
•Payload nie je šifrovaný, len kódovaný. Citlivé údaje by nemali byť súčasťou.
JWT je moderný a efektívny spôsob autentifikácie a autorizácie, široko používaný vo webových a mobilných aplikáciách.