Welcome to Our Website

JSON Web Token (JWT) förklarade

JSON Web Token är en standard som används för att skapa åtkomsttokens för ett program.

det fungerar så här: servern genererar en token som certifierar användarens identitet och skickar den till klienten.

klienten skickar token tillbaka till servern för varje efterföljande förfrågan, så servern vet att begäran kommer från en viss identitet.

denna arkitektur visar sig vara mycket effektiv i moderna webbappar, där efter att användaren har autentiserats utför vi API-förfrågningar antingen till vila eller ett GraphQL API.

vem använder JWT?, Google, till exempel. Om du använder Google API: er använder du JWT.

en JWT är kryptografiskt signerad (men inte krypterad, därför är det obligatoriskt att använda HTTPS vid lagring av användardata i JWT), så det finns en garanti att vi kan lita på det när vi tar emot det, eftersom ingen mellanhand kan avlyssna och ändra det, eller de data den innehar, utan att ogiltigförklara det.

som sagt kritiseras JWTs ofta för deras överanvändning, och speciellt för att de används när mindre problematiska lösningar kan användas.

Du måste bilda din åsikt kring ämnet., Jag förespråkar inte för en teknik över en annan, bara presentera alla möjligheter och verktyg du har till ditt förfogande.

vad är de bra för? Huvudsakligen API-autentisering och server-till-server-auktorisering.

hur genereras en JWT-token?

använda nod.,js du kan generera den första delen av token genom att använda den här koden:

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

vi ställer in signeringsalgoritmen att vara HMAC SHA256 (JWT stöder flera algoritmer), då skapar vi en buffert från det här JSON-kodade objektet, och vi kodar det med base64.

det partiella resultatet äreyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

nästa lägger vi till nyttolasten, som vi kan anpassa med någon form av data., Det finns reserverade nycklar ,inklusiveiss ochexp som identifierar emittenten och tokens utgångstid.

Du kan lägga till dina egna data till token genom att använda ett objekt:

const payload = { username: 'Flavio' }

vi konverterar det här objektet, JSON-kodat, till en buffert och vi kodar resultatet med base64, precis som vi gjorde tidigare:

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

i detta fall är det partiella resultateteyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

därefter får vi en signatur från huvud-och nyttolastinnehållet, vilket ser till att vårt innehåll inte kan ändras även om det avlyssnas eftersom vår signatur kommer att ogiltigförklaras. För att göra detta använder vicrypto Nodmodulen:

vi användersecretKey hemlig nyckel och skapar en base64-kodad representation av den krypterade signaturen.,

värdet av signaturen i vårt fall är

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

Vi är nästan färdiga, vi behöver bara sammanfoga de 3 delarna av rubrik, nyttolast och signatur genom att separera dem med en punkt:

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

API-autentisering

detta är förmodligen det enda förnuftiga sättet att använda JWT.

ett vanligt scenario är: du registrerar dig för en tjänst och hämtar en JWT från service-instrumentpanelen. Detta är vad du kommer att använda från och med nu för att autentisera alla dina önskemål till servern.,

ett annat användningsfall, vilket är motsatsen, skickar JWT när du hanterar API och klienter ansluter till dig, och du vill att dina användare ska skicka efterföljande förfrågningar genom att bara skicka token.

i det här fallet måste klienten lagra token någonstans. Var är det bästa stället? I en HttpOnly cookie. De andra metoderna är alla benägna att XSS-attacker och som sådana bör de undvikas. En HttpOnly-cookie är inte tillgänglig från JavaScript, och skickas automatiskt till ursprungsservern på varje förfrågan, så det passar perfekt användningsfallet.,

Välj det bästa JWT-biblioteket

beroende på vilket språk och vilken miljö du använder kan du välja mellan ett antal bibliotek. De mest populära är listade i jwt.io webbplats.

använd inte jwts som sessionstoken

Du ska inte använda JWTs för sessioner. Använd en vanlig sessionsmekanism på serversidan, eftersom den är mycket effektivare och mindre utsatt för dataexponering.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *