OAuth (sau Open Authentication) este un protocol liber prin care se poate permite accesul la resurse aflate pe un alt site fără a dezvălui datele de conectare (nume utilizator și parolă) către site-ul în care se dorește 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 acordă un acces mai restrâns la resursele personale aflate pe un site, decât dacă le-am accesat direct din acel site. La fel cum o cheie pentru valet (cel care se ocupa de parcarea mașinii) ar permite accesul doar la anumite funcții ale mașinii și pentru o perioadă restrânsă sau cum un ecuson de vizitator nu ar permite accesul la orice încăpere dintr-o clădire.

Înțelegerea protocolului OAuth se bazează pe cunoașterea următorilor termeni:

  • Resursele – sunt obiectele private ale unui utilizator la care se dorește accesul selectiv de către alte site-uri sau aplicații
  • Furnizorul de Servicii – este cel care suporta toate aspectele ale implementarii protocolului, cel care urmează sa ofere acces la resursele care le are în administrare către alți clienți. Poate fi un site de stocare de poze care oferă acces altor site-uri pentru preluarea imaginilor stocate de către un anume utilizator. Poate fi un site care stochează toate contactele (nume, email, telefon, adresa) personale ale unor utilizatori. Poate fi, în general, orice serviciu care oferă stocarea de informații private și accesibile selectiv. De regulă, acest furnizor de servicii, își oferă serviciile în baza unei înscrieri și în baza unei autentificări folosind un nume utilizator și o parolă.
  • Utilizatorul – este cel pentu care s-a inventat acest protocol. Utilizatorul are resurse în cadrul unui furnizor de servicii (imagini, video, contacte, mesaje) care nu vrea sa le facă publice, dar care vrea sa le folosească și pe alte site-uri. El este cel care va decide cărui site va acorda acces la resursele proprii
  • Consumatorul – este site-ul de pe care se dorește accesarea resurselor aflate la furnizorul de servicii.
  • Jetonul – sau celebrul token, este identificatorul prin care furnizorul de servicii va comunica cu consumatorul. În baza lui se va ști ce resurse și ale cărui utilizator trebuiesc partajate

Astfel, presupunem că deținem un cont pe site-ul Flickr în care avem stocate câteva imagini din vacanța de iarna. Aceste imagini le dorim printate folosind un serviciu online. În situația de față furnizorul de servicii este flickr.com deoarece deține niște resurse pe care dorim sa le partajăm folosind protocolul OAuth către un site ce oferă servicii de printare. Pentru a obține imaginile stocate pe flickr.com putem manual să le descărcăm și să le încarcăm pe site-ul de printat fotografii. Dar ar dura prea mult. Site-ul de printare fotografii se oferă să le preia automat în numele nostru. Pentru aceasta noi va trebui să furnizăm adresa de email şi parola pentru ca site-ul să ceară în numele nostru lista de fotografii pe care o avem pe Flickr. Intervine problema securităţii şi a increderii faţă de site-ul care ne va printa pozele: furnizând parola, aceasta poate fi stocată pe serverele lor, iar cineva rău intenţionat poate crea daune.

Aici intervine OAuth. Procesul de obţinere de informaţii de la Flickr fără a dezvălui parola pe alte site-uri decât Flickr.com este următorul

  1. Accesăm site-ul comsumatorului, în cazul nostru cel care ne va oferi servicii de printat fotografii.
  2. În cadrul acestuia vom găsi informatii cum că este dispus să preia imagini de pe site-ul flick.com
  3. Pentru a prelua aceste informatii vom fi redirectionati pe flickr.com
  4. Fiind pe flickr.com, deci într-un loc sigur, putem să ne autentificăm cu emailul şi cu parola persoanlă
  5. După autentificare flickr.com ne va redirecţiona înapoi pe site-ul de la care am pornit (cel de printare imagini) şi îi va furniza acestuia şi un jeton (token)
  6. Folosind acest jeton, site-ul de printare fotografii va face cereri in numele nostru catre flickr.com pentru a accesa fotografiile ce urmeaya a fi printate.

Jetonul este un cod unic, securizat, cu ajutorul acelui caruia se asigură faptul că se vor accesa doar imaginile din contul nostru şi pentru o perioadă finită de timp.

Vom arăta în următorul articol o implementare parctică a protocolului OAuth folosind un serviciu de microblogging. Vom crea o aplicaţie care interacţionează prin OAuth cu o platfomă externă pentru autentificare şi trimitere de mesaje.