Welcome to Our Website

JSON Web-Token (JWT) forklart

JSON Web-Token er en standard som brukes til å opprette tilgangskoder for et program.

Det fungerer på denne måten: serveren genererer et token som bekrefter brukeren identitet, og sender det til kunden.

klienten vil sende token tilbake til serveren hver påfølgende forespørsel, slik at serveren vet forespørselen kommer fra en bestemt identitet.

Denne arkitekturen viser seg å være svært effektive i moderne Web Apps, hvor etter at brukeren er autentisert vi utfører API-forespørsler enten i RO eller en GraphQL API.

Hvem bruker JWT?, Google, for eksempel. Hvis du bruker Google Api-er, vil du bruke JWT.

EN JWT er kryptografisk signert (men ikke kryptert, derfor bruker HTTPS er obligatorisk når du lagrer brukerdata i JWT), så det er en garanti for at vi kan stole på det når vi har mottatt det, som uten mellomledd kan fange opp og endre det, eller data som det holder, uten å forhindre det.

når Det er sagt, JWTs er ofte kritisert for sin overforbruk, og spesielt for dem som brukes ved mindre problematisk løsninger kan brukes.

Du trenger for å danne din mening rundt temaet., Jeg er ikke taler for en teknologi over en annen, bare å presentere alle muligheter og verktøy du har til din disposisjon.

Hva er det godt for? Hovedsakelig API-godkjenning, og server-til-server-godkjenning.

Hvordan er en JWT token generert?

ved Hjelp av Noden.,js du kan generere den første delen av token ved å bruke denne koden:

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

Vi satt signatur-algoritmen til å være HMAC SHA256 (JWT støtter flere algoritmer), så vi skape en buffer mot dette JSON-kodet objekt, og vi kode det å bruke base64.

Den delvis resultat er eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

Neste vi legge til nyttelast, som vi kan tilpasse med noen form for data., Det er reservert taster, inkludert iss og exp som identifiserer utsteder og utløpsdato for token.

Du kan legge til dine egne data til token ved hjelp av et objekt:

const payload = { username: 'Flavio' }

Vi konvertere dette objektet, JSON-kodet til en Buffer og vi kode resultatet ved å bruke base64, akkurat som vi gjorde før:

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

I dette tilfellet delvis resultat er eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

Neste, får vi en signatur fra hodet og nyttelast innhold, noe som gjør at innholdet kan ikke endres, selv om fanges opp som vår signatur vil bli brutt. For å gjøre dette, vil vi bruke crypto Node-modul:

Vi bruke secretKey hemmelig nøkkel og opprette en base64-kodet representasjon av kryptert signatur.,

verdien av signatur i vårt tilfelle er

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

Vi er nesten ferdig, vi trenger bare å sette sammen de 3 deler av header, nyttelast og signatur ved å skille dem med et punkt:

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

API godkjenning

Dette er trolig den eneste fornuftige måten å bruke JWT.

Et vanlig scenario er: du registrerer deg for tjenesten og laste ned en JWT fra tjenesten dashbordet. Dette er hva du vil bruke fra nå av til å godkjenne alle dine forespørsler til serveren.,

en Annen bruk tilfelle, som er det motsatte, er å sende JWT når du klarer API og klienter som kobler til deg, og du vil at brukerne skal sende etterfølgende forespørsler med bare passerer token.

I dette tilfellet, må kunden å lagre token et sted. Hvor er det beste stedet? I en HttpOnly informasjonskapselen. De andre metodene er alle utsatt for XSS-angrep og slik de bør unngås. En HttpOnly informasjonskapsler er ikke tilgjengelig fra JavaScript, og du blir automatisk sendt til den opprinnelige serveren ved hver forespørsel, slik at det passer perfekt til bruk tilfelle.,

Velge den beste JWT bibliotek

Avhengig av språket og miljøet du bruker, kan du velge fra en rekke biblioteker. De mest populære er oppført i jwt.io nettstedet.

ikke bruk JWTs som økt tokens

Du bør ikke bruke JWTs for økter. Bruk en vanlig server-side økt mekanisme, som det er mye mer effektivt og er mindre utsatt for data eksponering.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *