Welcome to Our Website

JSON Web Token (JWT) explained

JSON Web Token is een standaard gebruikt om toegang tokens voor een toepassing te maken.

Het werkt op deze manier: de server genereert een token dat de identiteit van de gebruiker certificeert, en stuurt het naar de client.

de client zal het token terugsturen naar de server voor elke volgende aanvraag, zodat de server weet dat het verzoek afkomstig is van een bepaalde identiteit.

deze architectuur blijkt zeer effectief te zijn in moderne Web Apps, waar nadat de gebruiker geauthenticeerd is, we API-verzoeken uitvoeren naar een REST-of een GraphQL-API.

Wie gebruikt JWT?, Google, bijvoorbeeld. Als u de Google API ‘ s gebruikt, gebruikt u JWT.

een JWT is cryptografisch ondertekend (maar niet versleuteld, dus het gebruik van HTTPS is verplicht bij het opslaan van gebruikersgegevens in de JWT), dus er is een garantie dat we het kunnen vertrouwen wanneer we het ontvangen, omdat geen tussenpersoon het kan onderscheppen en wijzigen, of de gegevens die het bevat, zonder het ongeldig te maken.

Dat gezegd hebbende, JWT ‘ s worden vaak bekritiseerd vanwege hun overmatig gebruik, en vooral omdat ze worden gebruikt wanneer minder problematische oplossingen kunnen worden gebruikt.

u moet uw mening over het onderwerp vormen., Ik pleit niet voor een technologie boven een andere, alleen het presenteren van alle mogelijkheden en instrumenten die je tot je beschikking hebt.

waar zijn ze goed voor? Voornamelijk API-verificatie en server-to-server-autorisatie.

Hoe wordt een JWT token gegenereerd?

met Node.,js u kunt het eerste deel van het token genereren met behulp van deze code:

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

We stellen het ondertekeningsalgoritme in op HMAC SHA256 (JWT ondersteunt meerdere algoritmen), dan maken we een buffer van dit JSON-gecodeerde object en we coderen het met Base64.

het partiële resultaat is eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

vervolgens voegen we de payload toe, die we kunnen aanpassen met alle soorten gegevens., Er zijn gereserveerde sleutels, waaronder iss en exp die de uitgever en de vervaldatum van het token identificeren.

U kunt uw eigen gegevens op het token door het gebruik van een object:

const payload = { username: 'Flavio' }

We zetten dit object, JSON-codering, voor een Buffer en we coderen het resultaat met base64, net zoals we dat deden voor:

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

In dit geval de gedeeltelijke resultaat is eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

vervolgens krijgen we een handtekening van de header en payload-inhoud, wat ervoor zorgt dat onze Inhoud niet kan worden gewijzigd, zelfs als deze onderschept wordt omdat onze handtekening ongeldig wordt. Om dit te doen, gebruiken we de crypto Node module:

we gebruiken de secretKey geheime sleutel en maken een base64 gecodeerde representatie van de versleutelde handtekening.,

De waarde van de handtekening in ons geval is

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

We zijn bijna klaar, we hoeven alleen maar naar het samenvoegen van de 3 delen van de kop, laadvermogen en ondertekening door ze te scheiden met een punt:

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

API authenticatie

Dit is waarschijnlijk de enige verstandige manier te gebruiken JWT.

een veelvoorkomend scenario is: u meldt zich aan voor een service en downloadt een JWT van het service dashboard. Dit is wat u vanaf nu zult gebruiken om al uw verzoeken aan de server te authenticeren.,

een ander gebruik, dat het tegenovergestelde is, is het verzenden van de JWT wanneer u de API beheert en clients met u verbinden, en u wilt dat uw gebruikers volgende verzoeken verzenden door gewoon het token door te geven.

in dit geval moet de client het token ergens opslaan. Waar is de beste plek? In een httpeonly cookie. De andere methoden zijn allemaal gevoelig voor XSS-aanvallen en als zodanig moeten ze worden vermeden. Een HttpOnly-cookie is niet toegankelijk vanuit JavaScript en wordt automatisch naar de origin-server verzonden op elk verzoek, dus het past perfect bij de use case.,

kies de beste JWT-bibliotheek

afhankelijk van de taal en omgeving die u gebruikt, kunt u kiezen uit een aantal bibliotheken. De meest populaire worden vermeld in de jwt.io website.

gebruik JWTs niet als sessietokens

gebruik JWTs niet voor sessies. Gebruik een reguliere server-side sessie mechanisme, omdat het veel efficiënter en minder gevoelig voor gegevens blootstelling.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *