Sobes.tech
Middle

Ce este autentificarea OAuth și cum funcționează?

sobes.tech AI

Răspuns de la AI

OAuth este un standard deschis de autorizare. Permite utilizatorului să ofere acces limitat aplicației terțe la datele sale, stocate pe un alt serviciu (server de resurse), fără a fi nevoie să transmită datele sale de autentificare (login/parolă) acestei aplicații.

Funcționarea OAuth se bazează pe emiterea de "token-uri de acces" în loc de date de autentificare. Fluxul tipic arată astfel:

  1. Cerere de autorizare: Utilizatorul încearcă să efectueze o acțiune într-o aplicație terță care necesită acces la datele de pe serverul de resurse. Aplicația inițiază o cerere de autorizare către serverul de autorizare al serverului de resurse.
  2. Redirecționare către serverul de autorizare: Utilizatorul este redirecționat către pagina serverului de autorizare.
  3. Autentificarea utilizatorului: Utilizatorul se autentifică pe serverul de autorizare (dacă nu a făcut-o deja).
  4. Consimțământul utilizatorului: Serverul de autorizare solicită utilizatorului permisiunea de a acorda aplicației terțe un anumit nivel de acces la datele sale (scopes). Utilizatorul acceptă sau refuză.
  5. Emiterea codului de autorizare: Dacă utilizatorul acceptă, serverul de autorizare redirecționează utilizatorul înapoi către aplicația terță, furnizând un "cod de autorizare".
  6. Schimbul codului de autorizare pentru un token de acces: Aplicația terță, după ce primește codul de autorizare, face o solicitare directă către serverul de autorizare pentru a schimba acest cod cu un "token de acces" și, opțional, un "token de reîmprospătare". Această solicitare are loc între servere, evitând browserul utilizatorului, ceea ce crește securitatea.
  7. Accesul la date: Aplicația terță folosește token-ul de acces obținut pentru a face solicitări către serverul de resurse în numele utilizatorului. Fiecare solicitare include token-ul în antet.
  8. Validarea token-ului: Serverul de resurse validează token-ul de acces și, dacă este valid și corespunde scopurilor solicitate, oferă acces la date.

OAuth are mai multe fluxuri (flows), potrivite pentru diferite scenarii, de exemplu:

  • Authorization Code Flow: Cel mai sigur, utilizat pentru aplicații web cu backend.
  • Implicit Flow: Învechit, folosit pentru aplicații web fără backend.
  • Client Credentials Flow: Pentru aplicații care accesează propriile resurse, nu cele ale utilizatorului.
  • Resource Owner Password Credentials Flow: Nu este recomandat, transmite datele de autentificare ale utilizatorului aplicației.

(Exemplu de Authorization Code Flow)

În C#, pentru implementarea OAuth în aplicații web, se folosesc adesea biblioteci precum ASP.NET Core Identity cu diferiți provideri (Google, Facebook etc.) sau biblioteci precum IdentityServer pentru crearea propriului server de autorizare.