În practică #11 | Autentificare și autorizare: care este diferența?
Cum schimbă tehnologia modul în care lucrăm
„În practică” este seria în care explicăm, fără jargon inutil și pornind de la exemple concrete, concepte și tehnologii care stau în spatele instrumentelor digitale pe care le folosim zi de zi.
Te conectezi într-o aplicație cu adresa de e-mail și parola. Sistemul verifică datele și îți deschide contul.
Din acel moment, însă, apare o altă întrebare: ce ai voie să faci în aplicație?
Poți să vezi doar propriile date sau și datele altor utilizatori? Poți modifica informații? Poți șterge ceva? Ai acces la zona de administrare?
Sunt două etape diferite, chiar dacă în utilizarea de zi cu zi aproape că nu le observăm.
Prima ține de autentificare. A doua, de autorizare.

Autentificarea răspunde la întrebarea „Cine ești?”
Atunci când introduci un nume de utilizator și o parolă, aplicația încearcă să verifice dacă ești persoana care pretinzi că ești.
Aceasta este autentificarea.
Parola este probabil cea mai cunoscută metodă, dar nu este singura. Identitatea poate fi verificată și cu ajutorul unui cod generat de o aplicație, al unei chei de securitate, al amprentei sau al recunoașterii faciale.
Uneori sunt combinate mai multe metode. Este ceea ce se întâmplă, de exemplu, atunci când folosim autentificarea în doi pași: parola este urmată de încă o verificare.
Dacă procesul este finalizat cu succes, sistemul știe – cu nivelul de încredere oferit de metoda respectivă – cine este utilizatorul care încearcă să intre.
Dar asta nu înseamnă automat că îi permite să facă orice.
Autorizarea răspunde la altă întrebare: „Ce ai voie să faci?”
Să luăm un exemplu foarte familiar: o platformă folosită într-o companie.
Un angajat se autentifică și își poate vedea profilul, documentele și informațiile de care are nevoie pentru activitatea sa.
Managerul se autentifică în aceeași platformă, dar poate avea acces și la anumite informații despre echipa pe care o coordonează.
Administratorul sistemului poate avea și alte opțiuni: să creeze conturi, să modifice anumite setări sau să gestioneze drepturile utilizatorilor.
Toți trei au trecut printr-un proces de autentificare.
Diferența este ceea ce sistemul le permite să facă după autentificare.
Aici intervine autorizarea.
De ce avem nevoie de ambele?
Imaginează-ți un hotel.
La recepție îți confirmi identitatea și primești cheia camerei. Putem compara acest moment cu autentificarea.
Cheia respectivă îți deschide însă camera ta, nu toate camerele hotelului, depozitul sau biroul personalului.
Asta seamănă cu autorizarea: după ce sistemul știe cine ești, stabilește la ce resurse ai acces și ce acțiuni poți face.
Într-o aplicație, principiul este asemănător.
Faptul că un utilizator este conectat nu ar trebui să însemne că poate vedea sau modifica orice informație existentă în sistem.
Ce se întâmplă când autorizarea nu este implementată corect?
Să presupunem că ai intrat într-un magazin online și accesezi pagina unei comenzi:
Comanda 125 este a ta, deci este normal să o poți vedea.
Dar ce se întâmplă dacă schimbi numărul din adresă și scrii:
Aplicația nu ar trebui să îți afișeze automat acea comandă. Mai întâi trebuie să verifice dacă utilizatorul autentificat are dreptul să vadă resursa respectivă.
Dacă verificarea lipsește și poți ajunge la datele altui client doar schimbând un identificator, avem o problemă de control al accesului.
Cu alte cuvinte, autentificarea poate să fi funcționat perfect – sistemul știe cine ești. Problema este că autorizarea nu a stabilit sau nu a verificat corect ce ai voie să vezi.
Rolurile sunt una dintre metodele prin care gestionăm accesul
În multe aplicații, drepturile sunt organizate prin roluri.
Un utilizator obișnuit poate avea un anumit set de permisiuni, un editor altul, iar un administrator un set mai larg.
Dar lucrurile pot deveni mult mai detaliate.
Uneori nu este suficient să știm că o persoană are rolul de „manager”. Sistemul poate trebui să verifice și ce echipă coordonează, ce proiecte îi aparțin sau ce tip de informații poate consulta.
De aceea, în spatele unui simplu buton care apare sau nu pe ecran pot exista mai multe reguli de acces.
Și mai este un detaliu important: ascunderea butonului nu este suficientă.
Chiar dacă interfața nu îi arată unui utilizator opțiunea „Șterge”, aplicația trebuie să verifice și în spate dacă acel utilizator are dreptul să execute acțiunea. Altfel, cineva ar putea încerca să o declanșeze direct, fără să folosească butonul din interfață.
De ce contează diferența?
Pentru utilizator, autentificarea și autorizarea se întâmplă de cele mai multe ori în fundal. Ne conectăm și folosim aplicația.
Pentru cei care construiesc software, diferența este însă esențială.
Un sistem trebuie să poată răspunde corect, de fiecare dată, la două întrebări:
Cine face această solicitare?
și
Are voie să facă acest lucru?
Prima ține de autentificare. A doua, de autorizare.
Iar cele două trebuie să funcționeze împreună. Pentru că securitatea unei aplicații nu se termină în momentul în care utilizatorul a introdus parola corectă. În multe situații, abia atunci începe decizia despre ce poate face mai departe.
Citește și celelalte articole din seria „În practică”




Comentarii