marți, 17 august 2010

Autentificarea fara parola: OAuth


Open Authentication


OAuth (sau Open Authentication) este un protocol liber prin care se poate permite accesul la resurse aflate pe un alt site fara a dezvalui datele de conectare (nume utilizator si parola) catre site-ul in care se doreste accesul la acele resurse partajate (imagini, video, adrese de email, conturi bancare etc.)

Este practic o “cheie pentru valet” sau un “ecuson pentru vizitator” cu care se acorda un acces mai restrans la resursele personale aflate pe un site, decat daca le-am accesat direct din acel site. La fel cum o cheie pentru valet (cel care se ocupa de parcarea masinii) ar permite accesul doar la anumite functii ale masinii si pentru o perioada restransa sau cum un ecuson de vizitator nu ar permite accesul la orice incapere dintr-o cladire.

Intelegerea protocolului OAuth se bazeaza pe cunoasterea urmatorilor termeni:
Resursele - sunt obiectele private ale unui utilizator la care se doreste accesul selectiv de catre alte site-uri sau aplicatii;
Furnizorul de servicii - este cel care suporta toate aspectele implementarii protocolului, cel care urmeaza sa ofere acces la resursele care le are in administrare catre alti clienti. Poate fi un site de stocare de poze care ofera acces altor site-uri pentru preluarea imaginilor stocate de catre un anume utilizator. Poate fi un site care stocheaza toate contactele (nume, email, telefon, adresa etc.) personale ale unor utilizatori. Poate fi, in general, orice serviciu care ofera stocarea de informatii private si accesibile selectiv. De regula, acest furnizor de servicii, isi ofera serviciile in baza unei inscrieri si in baza unei autentificari, folosind un nume de utilizator si o parola;
Utilizatorul - este cel pentu care s-a inventat acest protocol. Utilizatorul are resurse in cadrul unui furnizor de servicii (imagini, video, contacte, mesaje etc.) care nu vrea sa le faca publice, dar care vrea sa le foloseasca si pe alte site-uri. El este cel care va decide carui site va acorda acces la resursele proprii;
Consumatorul - este site-ul de pe care se doreste accesarea resurselor aflate la furnizorul de servicii;
Jetonul - sau celebrul token, este identificatorul prin care furnizorul de servicii va comunica cu consumatorul. In baza lui se va sti ce resurse si ale carui utilizator trebuiesc partajate.

Astfel, presupunem ca detinem un cont pe site-ul Flickr in care avem stocate cateva imagini din vacanta de iarna. Aceste imagini le dorim printate folosind un serviciu online. In situatia de fata, furnizorul de servicii este flickr.com deoarece detine niste resurse pe care dorim sa le partajam folosind protocolul OAuth catre un site ce ofera servicii de printare. Pentru a obtine imaginile stocate pe flickr.com, putem sa le descarcam manual si sa le incarcam pe site-ul de printat fotografii. Dar ar dura prea mult. Site-ul de printare fotografii se ofera sa le preia automat in numele nostru. Pentru aceasta, noi va trebui sa furnizam adresa de email si parola pentru ca site-ul sa ceara in numele nostru lista de fotografii pe care o avem pe Flickr. Intervine problema securitatii si a increderii fata de cei care ne vor printa pozele: furnizand parola, aceasta poate fi stocata pe serverele lor, iar cineva rau intentionat poate crea daune.

Aici intervine OAuth. Procesul de obtinere de informatii de la Flickr fara a dezvalui parola pe alte site-uri decat Flickr.com este urmatorul:
Accesam site-ul comsumatorului, in cazul nostru cel care ne va oferi servicii de printat fotografii;
In cadrul acestuia vom gasi informatii cum ca este dispus sa preia imagini de pe site-ul flickr.com;
Pentru a prelua aceste informatii vom fi redirectionati pe flickr.com;
Fiind pe flickr.com, deci intr-un loc sigur, putem sa ne autentificam cu emailul si cu parola persoanla;
Dupa autentificare flickr.com ne va redirectiona inapoi pe site-ul de la care am pornit (cel de printare imagini) si ii va furniza acestuia si un jeton (token);
Folosind acest jeton, site-ul de printare fotografii va face cereri in numele nostru catre flickr.com pentru a accesa fotografiile ce urmeaza a fi printate.


Jetonul este un cod unic, securizat, cu ajutorul caruia se asigura faptul ca se vor accesa doar imaginile din contul nostru si pentru o perioada finita de timp. Voi arata in urmatorul articol o implementare practica a protocolului OAuth folosind un serviciu de microblogging. Voi crea o aplicatie care interactioneaza prin OAuth cu o platfoma externa pentru autentificare si trimitere de mesaje.

Niciun comentariu:

Trimiteți un comentariu