Ceea ce este bun pentru securitatea web supremă

Atât JWT, cât și OAuth vă pot ajuta să îmbunătățiți securitatea aplicației dvs. web, oferind autentificare și autorizare sigure. Dar pe care ar trebui să implementați pentru a permite utilizatorilor să acceseze aplicația dvs. web în siguranță? Am pregătit un articol detaliat despre JWT vs. OAuth pentru a răspunde la această întrebare.

După ce îl citiți, veți avea o idee clară despre ce sunt JWT și OAuth, ce beneficii oferă, cum diferă și care ar trebui să implementați pentru a îmbunătăți securitatea aplicației dvs. web.

Fără alte prelungiri, haideți să ne scufundăm.

Ce este un JWT?

JWT, care înseamnă JSON Web Token, este un standard deschis care definește o modalitate de a partaja în siguranță informații între două părți ca obiect JSON. Deoarece informațiile sunt semnate digital, părțile pot avea încredere și pot verifica informațiile transmise prin jetoane web JSON.

O dimensiune relativ mică a JWT-urilor le permite să fie trimise printr-un parametru POST, o adresă URL sau în interiorul unui antet HTTP. Un token web JSON are trei părți: antet, sarcină utilă și semnătură.

Antetul spune ce tip de token este și tipul de algoritm de semnare utilizat. Partea sarcină utilă a unui JWT include afirmații care sunt declarații despre utilizatori și date suplimentare.

După cum sugerează și numele, partea de semnătură a unui token web JSON are semnătura pentru a verifica dacă mesajul nu a fost temperat pe parcurs.

Cum funcționează JWT-urile

Sursa imagine: DEV

Iată cum funcționează un token web JSON.

Conectare utilizator

Utilizatorii se conectează la aplicația dvs. web trimițându-și numele de utilizator și parolele. Apoi, aplicația dumneavoastră transferă aceste date de conectare pe serverul de autentificare.

Generarea de jetoane

După ce serverul de autentificare a verificat acreditările de conectare ale utilizatorilor, generează JSON Web Tokens și le trimite utilizatorilor. Aceste JWT pot include informații critice despre utilizatori și sesiuni de autentificare. Utilizatorii stochează aceste JWT-uri local. Pe baza setărilor, serverul poate semna, de asemenea, JWT-uri folosind o cheie privată sau secretă partajată pentru a spori securitatea.

Verificare token

Când utilizatorii fac cereri către serverul dvs. de aplicații pentru a accesa orice resursă, ei își vor include JWT-urile în cererile de server. Serverul dvs. de aplicații va verifica semnăturile în JWT și va verifica revendicările din încărcături utile pentru a verifica dacă utilizatorilor li se permite să acceseze resursele solicitate.

Dacă JWT-urile sunt valide, utilizatorilor li se va acorda acces la resursele solicitate din aplicația dvs. web.

Cazuri de utilizare ale JWT

Se pot folosi JSON Web Tokens în următoarele moduri:

#1. Autorizare

După ce utilizatorii se conectează cu succes la aplicația dvs. web prin punctul final de conectare, serverul de autentificare le va emite JWT. Utilizatorii își vor folosi JWT-urile pentru a accesa resursele din cadrul aplicației, care necesită autentificare pentru a-și dovedi identitatea.

Schimbul de informații între părți

JSON Web Token poate fi opțiunea potrivită pentru transmiterea în siguranță a informațiilor către utilizatori validi. Tokenurile web JSON sunt semnate pentru a se asigura că informațiile provin din sursa originală. De asemenea, structura JWT (partea semnăturii) permite receptorilor să verifice dacă informațiile nu sunt modificate pe parcurs.

Beneficiile JWT-urilor

Următoarele sunt beneficiile cheie ale implementării JWT-urilor în aplicația dvs. web.

  • Spre deosebire de jetoanele SAML, JWT-urile sunt ușoare. Deci, le puteți implementa rapid în mediile HTML și HTPP, făcând JWT-urile ideale pentru aplicațiile client, cum ar fi aplicațiile mobile.
  • JWT-urile oferă securitate robustă. Puteți semna simetric JWT printr-un secret partajat folosind algoritmul HMAC sau o cheie privată pentru a le semna asimetric.
  • JWT-urile vin cu un mecanism de expirare încorporat, care vă permite să setați perioada de expirare a JWT-urilor pentru a spori securitatea.
  • Tokenurile web JSON sunt adoptate pe scară largă de diferite soluții Single Sign-On. Ca rezultat, este ușor să lucrați cu JWT.
  6 servere de găzduire Assetto Corsa pentru un joc plin de acțiune

Mai mult, JWT-urile pot economisi spațiu de stocare a bazei de date în compania dumneavoastră. Acest lucru se datorează faptului că serverul dvs. creează doar JWT-uri și sunt salvate pe partea clientului. De asemenea, JWT-urile nu necesită o căutare în baza de date.

Deci, JWT-urile pot fi verificate rapid, oferind o experiență superioară utilizatorului.

Limitările JWT

Deși JWT-urile sunt o modalitate excelentă de a autoriza utilizatorii. Au anumite limitări, cum ar fi:

  • Sunteți responsabil pentru asigurarea siguranței cheii de criptare. Dacă un hacker pune mâna pe cheia care vă semnează JWT-urile, aveți mari probleme. Ei ar putea face token-uri false care să încurce cu datele dvs. de utilizator. Acesta este un risc uriaș de securitate.
  • JWT-urile nu au nevoie de un apel de bază de date pentru fiecare verificare, ceea ce sună bine. Dar dacă trebuie să revocați unul cât mai curând posibil, va trebui să îl puneți pe lista neagră. Nu este o sarcină rapidă sau simplă.
  • Când un JWT expiră, nu este vorba doar de extinderea temporizatorului. Sistemul dvs. va cere utilizatorului să se conecteze din nou pentru a obține un token nou. Acest lucru adaugă complexitate întregului proces, necesitând mai multă gândire la experiența utilizatorului și la fluxurile de securitate. Pentru a ușura procesul, puteți implementa jetoane de reîmprospătare în combinație cu JWT. Când token-ul de acces expiră, clienții pot folosi aceste jetoane de reîmprospătare pentru a solicita noi jetoane de acces fără ca clientul să trimită din nou acreditările de conectare.
  • Implementarea JWT-urilor în aplicația dvs. web nu este o sarcină simplă; necesită lucrări de inginerie suplimentare. Va trebui să configurați procesul de creare a simbolurilor, să alegeți mecanismul de semnare potrivit pentru aplicația dvs. și să le integrați pe toate cu arhitectura dvs. existentă.

JWT-urile nu sunt o soluție într-un singur pas, ci mai degrabă un proiect care necesită o planificare și execuție atentă.

Ce este OAuth?

OAuth, prescurtare pentru autorizare deschisă, este un protocol de autorizare standard deschis pentru autorizare. Permite aplicațiilor web sau site-urilor web să acceseze resursele găzduite de aplicații terțe în numele utilizatorilor fără ca utilizatorii să partajeze acreditările de conectare pentru aplicații terțe.

Acum, scris ca OAuth 2.0 (cea mai recentă versiune de OAuth), este utilizat pe scară largă pentru a autentifica utilizatorii prin intermediul unui server de autentificare.

De exemplu, cu OAuth activat, utilizatorii se pot conecta la aplicația dvs. cu conturile lor de Facebook sau Google. Dar își vor introduce datele de conectare numai pe conturile Facebook sau Google.

Cum funcționează OAuth

Sursa imagine: Zoho

De exemplu, aveți o aplicație de gestionare a timpului. Și pentru a permite oricui să vă folosească aplicația în mod eficient, aveți nevoie de acces la căsuța de e-mail. În zilele anterioare, utilizatorii trebuiau să-și partajeze acreditările de conectare cu aplicația dvs. pentru a permite aplicației să-și acceseze căsuțele de e-mail. OAuth2.0 a rezolvat această problemă.

  Cum să încorporați un desen Google în Google Docs

Iată cum arată fluxul de lucru OAuth2.0:

  • Aplicația dvs. de gestionare a timpului (clientul) solicită accesarea resurselor protejate; în acest caz, este căsuța de e-mail a utilizatorului, deținută de utilizator (proprietarul resursei). Aplicația dvs. face acest lucru trimițând utilizatorul la punctul final autorizat.
  • Proprietarul resursei (utilizatorul) autentifică și autorizează cererea de acces la resurse din aplicația de gestionare a timpului. Clientul (aplicația dvs.) va primi o autorizare de la punctul final autorizat.
  • Aplicația dvs. va solicita un jeton de acces de la serverul de autorizare pentru a accesa căsuța de e-mail a utilizatorului. Va face acest lucru prin depunerea acordului de autorizare și cu propria identitate autentificată.
  • Dacă identitatea aplicației dvs. este autentificată și acordarea de autorizare este validă, aplicația dvs. va primi un simbol de acces pentru a accesa căsuța de e-mail a utilizatorului.
  • Dacă indicativul de acces este valid, aplicația dvs. poate accesa acum datele utilizatorului (căsuța de e-mail a utilizatorului) trimițând simbolul de acces pentru autentificare.
  • Acum, aplicația dvs. de gestionare a timpului poate accesa căsuța de e-mail a utilizatorului. După cum a făcut Oauth diverse tipuri de granturifluxul de autorizare poate diferi ușor în funcție de tipurile de acordare a autorizației.

    Beneficiile OAuth

    Următoarele sunt beneficiile cheie ale utilizării OAuth.

    • OAuth este un standard acceptat pe scară largă. Aceasta înseamnă că toate serviciile de autentificare de top înțeleg și folosesc OAuth.
    • Utilizatorii vor găsi multe plug-in-uri și funcții OAuth din care să aleagă, datorită utilizării pe scară largă și compatibilității.
    • OAuth oferă biblioteci client testate pentru aproape toate limbajele de programare și cadrele web. Deci, puteți folosi limba preferată cu OAuth.
    • OAuth este foarte sigur și bine verificat. Deoarece este atât de utilizat pe scară largă, experții au luat deja în considerare toate riscurile de securitate posibile.
    • OAuth este excelent pentru decuplarea codului. Codul principal al aplicației nu se încurcă atunci când gestionați sarcinile de autentificare. Acest lucru facilitează gestionarea și actualizarea aplicației pe termen lung.

    Cazuri de utilizare OAuth

    Următoarele sunt câteva cazuri de utilizare populare ale OAuth:

    • Cea mai obișnuită utilizare a OAuth 2.0 este crearea de aplicații terță parte pentru a accesa conturile utilizatorilor. Cu OAuth 2.0, utilizatorii pot autoriza terțe părți să își acceseze datele stocate în diferite servicii fără a furniza terților acreditările de conectare pentru aceste servicii.
    • În calitate de proprietar de aplicație web, puteți folosi OAuth 2.0 pentru a implementa Single Sign-on. Puteți explora aceste soluții OAuth open-source pentru proiectul dvs.
    • Puteți implementa OAuth 2.0 în gateway-ul dvs. API pentru ca gateway-ul API să acționeze ca un server de autorizare. Acest lucru va asigura că gateway-ul API va redirecționa solicitările de la clienți cu token-uri de acces valide.
    • OAuth 2.0 poate permite IoT și dispozitive inteligente, cum ar fi frigiderele sau televizoarele, să interacționeze cu API-uri terță parte în numele utilizatorilor. Acest lucru este util atunci când un utilizator dorește să se conecteze la o aplicație pe gadgeturi fără o tastatură obișnuită, cum ar fi un televizor inteligent sau o consolă de jocuri.

    Limitările OAuth

    Gama de fluxuri disponibile poate fi descurajantă pentru cei nou la OAuth. Nu este vorba doar de a alege unul; uneori, aveți nevoie de o combinație pentru a îndeplini toate cerințele dvs. de securitate. Această complexitate poate face dificil pentru începători să știe de unde să înceapă, ce să folosească și cum să o integreze eficient.

    Fiecare flux are un scop unic, fie pentru aplicații mobile, comunicații de la server la server, fie aplicații web. Deci, analizarea cu atenție a nevoilor dumneavoastră specifice este esențială înainte de a face o alegere.

      12 Open Source și Manager de parole comerciale pentru echipe

    OAuth 2.0 depinde de SSL/TLS pentru a menține lucrurile în siguranță. Dacă SSL/TLS nu este configurat corect, atunci securitatea OAuth 2.0 ar putea fi în pericol.

    De asemenea, OAuth poate ridica probleme de confidențialitate, în special atunci când urmărește activitatea utilizatorului. Când utilizați un serviciu precum „Conectați-vă cu Google”, Google poate deveni conștient de activitatea dvs. pe acel site terță parte. Google poate ști nu numai că v-ați conectat, dar poate urmări și cât de des și când interacționați cu acel site.

    În plus, OAuth ar putea fi exagerat pentru setări mai simple, cum ar fi o aplicație cu doar un front-end și un back-end. Este posibil să nu aveți nevoie de complexitățile sale în astfel de cazuri.

    Diferența dintre JWT și OAuth

    JWT-urile și OAuth îndeplinesc funcția crucială de verificare a identității utilizatorului pentru a autoriza accesul la resurse. Sunt instrumente esențiale în peisajul securității, dar diferă în ceea ce privește domeniul de aplicare, complexitatea și aplicarea.

    CaracteristiciJWTsOAuthUtilizarea principalăJWT-urile se concentrează în principal pe API. OAuth acoperă web, browser, API și alte aplicații. Token vs. ProtocolJWT-urile sunt un format de simbol. OAuth este un protocol de autorizare. StocareJWT se bazează doar pe stocarea la partea client. stocare pe partea serverului. Flexibilitate JWT-urile sunt mai limitate în domeniul de aplicare. OAuth oferă mai multă flexibilitate și o gamă mai largă de cazuri de utilizare. Ușurință în utilizareJWT-urile sunt mai simple și mai ușor de înțeles. OAuth este mai complex.

    În timp ce JWT-urile sunt mai simple și mai orientate spre securitatea API, OAuth oferă o soluție cuprinzătoare de mecanism de autentificare care se poate adapta la diferite scenarii.

    Iar OAuth le poate permite utilizatorilor să permită unei aplicații terță parte să-și acceseze datele pe o altă platformă fără a dezvălui detaliile de conectare.

    Dacă unul este mai bun depinde de nevoile specifice ale sistemului sau rețelei în cauză.

    Puteți utiliza JWT și OAuth împreună?

    Deși JWT-urile și OAuth servesc unor scopuri diferite, le puteți combina împreună.

    Protocolul OAuth nu specifică niciun format de simbol care trebuie utilizat cu strictețe. Deci, puteți implementa JWT-uri în OAuth.

    De exemplu, serverul de autentificare OAuth2 poate emite un jeton de acces cu JWT. Și acest JWT ar putea include informații suplimentare în sarcina utilă, îmbunătățind performanța. Acest lucru se datorează faptului că vor exista călătorii dus-întors reduse între serverele de autentificare și de resurse.

    Combinarea JWT-urilor și OAuth2 se poate întâmpla și printr-o abordare dual-token — OAuth2 emite două jetoane separate în această metodă: un access_token și un JWT. JWT conține informații suplimentare de identitate. Această abordare oferă un nivel suplimentar de detalii, oferindu-vă mai mult control asupra accesului și datelor utilizatorilor.

    Este esențial să utilizați OpenID Connect atunci când optați pentru această strategie dual-token. OpenID Connect se bazează pe OAuth2 și adaugă mai multe câmpuri standardizate la token-uri.

    Utilizarea JWT-urilor în loc de OAuth2 poate face lucrurile mai rapide și mai puțin complexe pentru anumite sarcini. Dar poate face și dezvoltarea mai dificilă.

    Când decideți să utilizați JWT cu OAuth2, luați în considerare dacă creșterea vitezei justifică munca suplimentară în dezvoltare.

    Concluzie

    În bătălia dintre JWT și OAuth pentru securitate web supremă, fiecare are avantaje și dezavantaje. JWT strălucește pentru autentificarea rapidă și fără stat, dar are limitări precum lipsa revocării încorporate. OAuth excelează în scenarii complexe de autorizare, dar poate fi exagerat pentru proiecte mai simple.

    Dacă aveți nevoie de autorizare solidă și autentificare eficientă, luați în considerare combinarea JWT și OAuth prin OpenID Connect.

    Alegerea dvs. ar trebui să depindă de nevoile specifice ale proiectului, nu doar de hypeul din jurul acestor tehnologii.

    În plus, puteți explora aceste platforme populare de autentificare a utilizatorilor pentru a alege cea mai bună soluție pentru aplicația dvs.