Welcome to Our Website

JSON Web Token (JWT) magyarázható

JSON Web Token egy szabványos létrehozásához használt hozzáférési tokenek egy alkalmazás.

Ez így működik: a szerver létrehoz egy tokent, amely igazolja a felhasználó személyazonosságát, majd elküldi az ügyfélnek.

az ügyfél minden további kérés esetén visszaküldi a tokent a kiszolgálónak, így a kiszolgáló tudja, hogy a kérés egy adott identitásból származik.

Ez az architektúra nagyon hatékonynak bizonyul a modern webes alkalmazásokban, ahol a felhasználó hitelesítése után API kéréseket hajtunk végre egy REST vagy egy GraphQL API számára.

Ki használja a JWT-t?, Például a Google. Ha a Google API-kat használja, akkor a JWT-t fogja használni.

A JWT a támadó aláírt (de nem titkosított, ezért HTTPS kötelező, amikor a felhasználói adatok tárolása a JWT), így nincs garancia, hogy bízhatunk, amikor megkapjuk, mint közvetítő elfoghatja, illetve módosításához, vagy az adatok birtokában, anélkül, hogy hatálytalanító.

Ez azt jelenti, hogy a JWTs-t gyakran kritizálják túlzott használatuk miatt, különösen azért, mert kevésbé problémás megoldásokat lehet használni.

meg kell alkotnia véleményét a téma körül., Nem támogatom a technológiát egy másikkal szemben, csak bemutatom az összes lehetőséget és eszközt, ami az Ön rendelkezésére áll.

mire jók? Elsősorban API-hitelesítés, valamint szerver-kiszolgálói engedélyezés.

hogyan jön létre egy JWT token?

csomópont használata.,js a token első részét ezzel a kóddal generálhatja:

const header = { "alg": "HS256", "typ": "JWT" }const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64')

az aláírási algoritmust HMAC SHA256 (a JWT több algoritmust támogat), majd létrehozunk egy puffert ebből a kódból JSON-kódolt objektum, és a Base64 segítségével kódoljuk.

a részleges eredmény eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

ezután hozzáadjuk a hasznos terhet, amelyet bármilyen adatokkal testreszabhatunk., Vannak fenntartott kulcsok, köztük aiss és aexp, amelyek azonosítják a kibocsátót és a token lejárati idejét.

felveheti a saját adatok a token használatával tárgy:

const payload = { username: 'Flavio' }

Mi átalakítani ezt a tárgyat, JSON-kódolt, hogy egy Puffer, mi kódolja az eredmény használata base64, ahogy eddig is:

const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64')

ebben Az esetben a részleges eredmény eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

ezután aláírást kapunk a fejlécről és a hasznos teher tartalomról, amely biztosítja, hogy a tartalom nem módosítható, még akkor sem, ha elfogják, mivel az aláírásunk érvénytelenné válik. Ehhez a crypto csomópont modult használjuk:

használjuk a secretKey titkos kulcsot, és létrehozunk egy Base64 kódolt ábrázolást a titkosított aláírásról.,

Az érték az aláírás az ügy

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

már majdnem kész Vagyunk, csak meg kell összefűzni a 3 rész a fejléc, hasznos aláírása az azokat elválasztó pont:

const jwt = `${encodedHeader}.${encodedPayload}.${signature}`

API hitelesítés

Ez talán az egyetlen értelmes módon használni JWT.

egy közös forgatókönyv: feliratkozol egy szolgáltatásra, és letölt egy JWT-t a szolgáltatás irányítópultjáról. Ez az, amit mostantól használni fog, hogy hitelesítse az összes kérését a kiszolgálóra.,

egy másik használati eset, amely éppen ellenkezőleg, elküldi a JWT-t, amikor az API-t kezeli, és az ügyfelek csatlakoznak hozzád, és azt akarja, hogy a felhasználók a következő kéréseket küldjék el a token átadásával.

ebben az esetben az ügyfélnek valahol tárolnia kell a tokent. Hol van a legjobb hely? Egy HttpOnly cookie-ban. A többi módszer mind hajlamos az XSS támadásokra, ezért ezeket el kell kerülni. A HttpOnly cookie nem érhető el a Javascriptből, ezért minden kérés esetén automatikusan az origin szerverre kerül, így tökéletesen megfelel a használati esetnek.,

válassza ki a legjobb JWT könyvtárat

a használt nyelvtől és környezettől függően számos könyvtár közül választhat. A legnépszerűbbek a következők jwt.io weboldal.

ne használja a JWTs-t munkamenet-tokenekként

nem szabad JWTs-t használni a munkamenetekhez. Használjon rendszeres szerver oldali munkamenet-mechanizmust, mivel sokkal hatékonyabb és kevésbé hajlamos az adatexpozícióra.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük