![translation](https://cdn.durumis.com/common/trans.png)
Ez egy AI által fordított bejegyzés.
Mi a JWT (JSON Web Token)?
- Írás nyelve: Koreai
- •
-
Referencia ország: Minden ország
- •
- Informatika
Válasszon nyelvet
A durumis AI által összefoglalt szöveg
- A JSON Web Token (JWT) egy kódolt token, amely az információk biztonságos átvitelét teszi lehetővé.
- A JWT fejlécből, hasznos adatokból és aláírásból áll, az aláírás biztosítja az adatok integritását.
- A JWT nem igényel külön állapotinformáció-tárolást, így a disztribúált környezetben jó skálázhatóságot biztosít.
Mi a JWT?
A JSON Web Token (JWT) egy olyan szabványosított (RFC 7519) módszer, amely lehetővé teszi az információk biztonságos átvitelét JSON objektumok formájában. A lényeg az, hogy a szükséges információkat tokenekbe csomagoljuk, majd titkosítjuk.
A JWT-t hangsúlyozottan aláírt tokenként (signed token) definiálják. Ha a titkosításhoz nyilvános/privát kulcspárt használnak, az aláírás garantálja, hogy a tokent csak az a fél írta alá, aki birtokolja a privát kulcsot. Ez azt jelenti, hogy a kulccsal rendelkező szerver ellenőrizheti a token érvényességét.
A JWT felépítése
A JWT egy headerből (Header), egy payloadból (Payload) és egy aláírásból (Signature) áll.
Az egyes részek Base64-ben vannak kódolva, és pontokkal (.) vannak elválasztva.
Header
{
"alg": "HS256",
"typ": "JWT"
A header két fontos információt tartalmaz: a token típusát (typ) és az alkalmazott aláírási algoritmust (alg). Az aláírási algoritmust a token aláírásának létrehozására és ellenőrzésére használják.
A typ "JWT"-re van állítva, az alg pedig HMAC, SHA256 stb. lehet. A fenti példában a HS256 algoritmust használjuk privát kulccsal.
Payload
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
A payload tartalmazza azokat az állításokat (Claim), amelyeket a tokennel szeretnénk átadni. Tartalmazhatja a felhasználó azonosító adatait vagy a tokennel kapcsolatos tulajdonságokat kulcs-érték párok formájában. A fejlesztők szabadon meghatározhatják a payload tartalmát!
A szabványos specifikációk szerint a kulcsok neveit tömören, 3 karakterrel definiálják.
A regisztrált állítások a következők:
- iss (Issuer): A token kiadója (tartalmazza a token kiadója egyedi azonosítóját)
- sub (Subject): A token célpontja
- aud (Audience): A token címzettje
- exp (Expiration Time): A token lejárati ideje (a lejárati idő után a token érvénytelen lesz)
- nbf (Not Before): A token aktiválási ideje (a megadott időpont előtt a token nem használható)
- iat (Issued At): A token kiállításának ideje
- jti (JWT Id): A JWT token azonosítója (több kiadó esetén lehetővé teszi a kiadók megkülönböztetését)
A fentieken kívül további, szükséges értékeket is hozzáadhatunk.
Fontos azonban megjegyezni, hogy a payload nem titkosított, csak aláírt érték, ezért nem szabad benne érzékeny információkat tárolni.
Dekódolással bárki megtekintheti a tartalmát. jwt.io weboldalon közvetlenül is ellenőrizhető.
Signature
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
A header és a payload Base64-ben kódolt értékeit a pont (.) karakterrel összekapcsolják, majd a your-256-bit-secret (a szerver privát kulcsa) segítségével aláírják.
Így csak a tokent kiadó szerver tudja a privát kulccsal visszafejteni az aláírást (Signature).
A visszafejtés során a privát kulccsal dekódolják az aláírást, majd ellenőrzik, hogy a base64UrlEncode(header) megfelel-e a JWT headerének, és a base64UrlEncode(payload) megfelel-e a payloadnak.
Az aláírástól eltekintve a header és a payload csak kódolva van, így az információk láthatók, de az aláírás garantálja az információk integritását és biztonságát.
A JWT önálló (Self-contained) token, amely tartalmazza az összes szükséges információt, így kiküszöböli a stateful szekciók hátrányait. A JWT nem igényel külön tárolót.
A szervernek nem kell szekciókat fenntartania, ami azt jelenti, hogy stateless. Ez nagyobb mértékű skálázhatóságot biztosít a disztribúciós rendszerekben és a mikroszervíz architektúrákban.
Az aláírás (Signature) egy digitális aláírás, amely biztosítja a token biztonságát és az adatok integritását.