de Sudheesh Shetty

Cum să simplificați autentificarea aplicației dvs. utilizând JSON Web Token

Cum sa simplificati autentificarea aplicatiei dvs utilizand JSON Web Token
Un flux de autentificare eșantion

Fiecare aplicație pe care o întâlnim astăzi implementează măsuri de securitate, astfel încât datele utilizatorului să nu fie utilizate în mod abuziv. Securitatea este întotdeauna ceva care se schimbă și evoluează. Autentificarea este una dintre părțile esențiale ale fiecărei aplicații.

Există diverse modalități de autentificare a utilizatorului. Să discutăm despre autentificarea bazată pe token folosind aplicația node.js. Pentru aceasta, vom folosi jetoane web JSON.

Ce sunt jetoanele web JSON (JWT)?

JSON Web Tokens (JWT) este un standard care definește un mod compact și autonom pentru transmiterea în siguranță a informațiilor între părți ca obiect JSON.

  • Compact: Dimensiune mai mică, astfel încât să poată fi ușor transferată.
  • Autosuficient: Conține toate informațiile despre utilizator.

Cum funcționează?

Când un utilizator trimite o cerere cu parametrii necesari, cum ar fi numele de utilizator și parola. Aplicația verifică dacă numele de utilizator și parola sunt valide. La validare, aplicația va crea un simbol folosind o sarcină utilă și o cheie secretă. Apoi va trimite jetonul înapoi utilizatorului pentru al stoca și îl va trimite cu fiecare cerere. Când utilizatorul trimite cererea cu acest simbol, aplicația verifică validitatea cu aceeași cheie secretă. Dacă jetonul este valid, cererea este servită, altfel aplicația va trimite un mesaj de eroare adecvat.

Cum sa simplificati autentificarea aplicatiei dvs utilizand JSON Web Token
Fluxul generației de jeton

Structura

Structura de bază a JWT este ceva de genul

header payload signature
  • antet: Conține tipul de jeton și algoritmul utilizat pentru a face semnătura. Se codifică la base64.
  • încărcătură utilă: Orice date personalizate ale utilizatorului, cum ar fi numele de utilizator și adresa de e-mail.
  • semnătură: Hash de antet codificat, sarcină utilă și o cheie secretă.

Avantajele JWT

  • Cheie unică: Nu este nevoie de apeluri de baze de date de fiecare dată pentru a verifica utilizatorul. O singură cheie secretă va decoda jetoanele furnizate de orice utilizator.
  • Portabil: Același simbol poate fi utilizat între diferite domenii sau platforme diferite. Tot ce are nevoie este cheia.
  • Expiră ușor: Se poate seta timpul de expirare folosind JWT. După acest timp, JWT expiră.

Cum putem face acest lucru?

Vom construi o aplicație node.js cu câteva rute și le vom autentifica folosind jetoane. Sunt necesare cunoștințe de bază despre node.js și javascript.

Pasul 1 – Deschideți terminalul. Porniți un proiect nou într-un director

cd auth
npm init

Aceasta va începe un nou proiect. Procesul va cere anumite informații. Furnizați toate detaliile necesare. Procesul se va crea pachet.json și va arăta cam așa.

{  "name": "auth",  "version": "1.0.0",  "description": "application to explain authentication",  "main": "server.js",  "scripts": {    "test": "echo "Error: no test specified" && exit 1"  },  "author": "Your name",  "license": "ISC"}

Pasul 2 – Instalați dependențele. Reveniți din nou la terminal și lipiți următoarea linie.

npm install express body-parser jsonwebtoken --save
  • expres: Node.js cadru de aplicații web.
  • analizor de corp: Pentru a obține parametri din solicitarea noastră POST.
  • jsonwebtoken: Pentru a crea și verifica jetoane.

După instalarea dependențelor. Package.json nostru va arăta cam așa:

{  "name": "auth",  "version": "1.0.0",  "description": "application to explain authentication",  "main": "server.js",  "scripts": {    "test": "echo "Error: no test specified" && exit 1"  },  "author": "Your name",  "license": "ISC",  "dependencies": {    "body-parser": "^1.17.2",    "express": "^4.15.3",    "jsonwebtoken": "^7.4.1"  }}

Pasul 3 – Creați server

Să creăm un server, care servește la portul 3000 care trimite index.html când / ruta se numește. Vom crea, de asemenea /login API care autentifică utilizatorul și un /getusers API care oferă lista utilizatorilor. Să creăm date fictive pentru moment și să le stocăm în matricea „utilizatori”. De asemenea, le puteți înlocui cu apeluri de baze de date.

Pasul 4 – Construiți clientul

Permiteți-ne să creăm un client folosind HTML, Bootstrap și JavaScript. Clientul nostru are două părți: ecran de autentificare și un loc pentru recuperarea utilizatorilor. Ecranul de conectare va conține casete de text pentru e-mail și parolă și un buton pentru trimiterea cererii. Vom adăuga, de asemenea, o casetă text și un buton pentru a trece simbolul și a obține lista de utilizatori.

Pasul 5 – Porniți aplicația

node server.js

Aplicația noastră este sigură?

Cum sa simplificati autentificarea aplicatiei dvs utilizand JSON Web Token

Nu, s-ar putea să vedeți că, chiar dacă nu treceți jetonul, puteți obține lista tuturor utilizatorilor. Nu am implementat încă autentificarea. Să adăugăm autentificare la /getusers API, astfel încât utilizatorii cu jeton valid să poată recupera lista de utilizatori.

Cum se adaugă autentificarea?

  1. Includeți JWT în fișierul server.js.
var jwt=require('jsonwebtoken');

2. Treceți sarcina utilă (orice obiect, aici treceți obiectul utilizator în sine) și un șir secret pentru a semna funcția și a crea un token.

var token=jwt.sign(<user>,<secret>);

3. Când simbolul este creat cu succes, transmiteți același lucru clientului.

res.json({token:token});

Puteți apoi să stocați jetonul pe partea clientului și să îl treceți de fiecare dată în timpul sesiunii pentru autentificare. Să schimbăm funcția „getlist” astfel încât să putem transmite simbolul către server atunci când dorim să accesăm lista de utilizatori.

Să adăugăm un middleware pentru autentificare /getusers sau orice rută sigură care se va adăuga în viitor. Asigurați-vă că toate rutele care necesită autentificare se află sub middleware.

În server.js, mai întâi avem ruta de conectare care creează token. După aceea avem middleware pe care îl vom folosi pentru a verifica simbolul. Toate rutele care necesită autentificare sunt după middleware. Comanda este foarte importantă.

4. Pentru a decoda, treceți simbolul și cheia secretă pentru a verifica funcția. Funcția va returna eroarea dacă simbolul este invalid sau succes dacă simbolul este valid.

jwt.verify(token,"samplesecret",(err,decod)=>{  //your logic})

Apelați next () astfel încât să fie apelate traseele respective.

Final server.js va arăta astfel:

Indexul final.html va arăta astfel:

Asta e. Acesta este un exemplu simplu de utilizare a simbolului pentru autentificarea aplicației. Am pus codul complet pe GitHub. Puteți verifica acolo.

sudheeshshetty / JWT_Auth
Contribuiți la dezvoltarea JWT_Auth prin crearea unui cont pe GitHub.github.com

Vă mulțumim pentru citire și urmați-mă și recomandați-le celorlalți făcând clic pe ♡. Mânerul meu Twitter este sudheeshshetty.