Welcome to Our Website

JSON Web Token (JWT) a explicat

JSON Web Token este un standard folosit pentru a crea token-uri de acces pentru o aplicație.

funcționează astfel: serverul generează un token care certifică identitatea utilizatorului și îl trimite Clientului.

Clientul va trimite tokenul înapoi la server pentru fiecare solicitare ulterioară, astfel încât serverul știe că solicitarea provine de la o anumită identitate.

această arhitectură se dovedește a fi foarte eficientă în aplicațiile web moderne, unde după autentificarea utilizatorului efectuăm solicitări API fie la un REST, fie la un API GraphQL.

cine folosește JWT?, Google, de exemplu. Dacă utilizați API-urile Google, veți utiliza JWT.un JWT este semnat criptografic (dar nu criptat, prin urmare, utilizarea HTTPS este obligatorie atunci când stocăm datele utilizatorului în JWT), deci există o garanție că putem avea încredere în el atunci când îl primim, deoarece niciun intermediar nu îl poate intercepta și modifica sau datele pe care le deține, fără a le invalida.acestea fiind spuse, JWT-urile sunt adesea criticate pentru utilizarea lor excesivă și mai ales pentru că sunt utilizate atunci când pot fi utilizate soluții mai puțin problematice.trebuie să vă formați opinia în jurul subiectului., Nu pledez pentru o tehnologie peste alta, doar prezentând toate oportunitățile și instrumentele pe care le aveți la dispoziție.

Pentru ce sunt bune? În principal autentificarea API și autorizarea server-to-server.

cum este generat un jeton JWT?

folosind nod.,js puteți genera prima parte a token-ul folosind acest cod:

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

Ne-am stabilit la semnarea algoritm să fie HMAC SHA256 (JWT acceptă mai multe algoritmi), apoi vom crea un tampon de acest JSON-codat obiect, și vom codifica folosind base64.

rezultatul parțial este eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.apoi adăugăm sarcina utilă, pe care o putem personaliza cu orice fel de date., Există chei rezervate, inclusiv iss și exp care identifica emitentul și data de expirare a cardului.

puteți adăuga propriile dvs. date la semn cu ajutorul unui obiect:

const payload = { username: 'Flavio' }

Ne-am transforma acest obiect, JSON-codificate, de la un Tampon și se codifică rezultatul folosind base64, așa cum am făcut-o înainte:

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

În acest caz, parțială rezultatul este eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

în continuare, obținem o semnătură din antetul și conținutul încărcăturii utile, ceea ce ne asigură că conținutul nostru nu poate fi modificat chiar dacă este interceptat, deoarece semnătura noastră va fi invalidată. Pentru a face acest lucru, vom folosi crypto Nod modulul:

Vom folosi secretKey cheie secretă și de a crea un base64 codificat reprezentare de semnătură.,

valoarea de semnătură în cazul nostru este

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

Suntem aproape gata, trebuie doar pentru a concatena cele 3 părți ale antet, sarcină utilă și semnătura de separându-le cu punct:

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

API autentificare

Acest lucru este, probabil, singurul mod de a utiliza JWT.

un scenariu comun este: vă înscrieți pentru un serviciu și descărcați un JWT din tabloul de bord al serviciului. Aceasta este ceea ce veți folosi de acum înainte pentru a vă autentifica toate solicitările către server.,

un Alt caz de utilizare, care este opusul, este trimiterea JWT când ați reușit API și clienții conectați la tine, și doriți ca utilizatorii dvs. pentru a trimite cereri ulterioare de trecere token.în acest caz, Clientul trebuie să stocheze tokenul undeva. Unde este cel mai bun loc? Într-un cookie HttpOnly. Celelalte metode sunt toate predispuse la atacuri XSS și, ca atare, ar trebui evitate. Un cookie HttpOnly nu este accesibil din JavaScript și este trimis automat la serverul de origine la fiecare solicitare, astfel încât se potrivește perfect cazului de utilizare.,

alegeți cea mai bună bibliotecă JWT

în funcție de limba și mediul pe care îl utilizați, puteți alege dintr-un număr de biblioteci. Cele mai populare sunt enumerate în jwt.io site-ul.

nu utilizați JWTs ca token-uri de sesiune

nu trebuie să utilizați JWTs pentru sesiuni. Utilizați un mecanism obișnuit de sesiune din partea serverului, deoarece este mult mai eficient și mai puțin predispus la expunerea datelor.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *