Tipul de autorizare Authorization Code în OAuth 2.0
Tipul de autorizare Authorization Code este unul dintre cele mai utilizate tipuri de autorizare OAuth 2.0. Este conceput special pentru aplicațiile care pot menține în mod confidențial secretul clientului, fiind ideal pentru aplicațiile server-side.
Cum funcționează Authorization Code?
- Redirecționare:
- Aplicația client redirecționează utilizatorul către endpoint-ul de autorizare al serverului de autorizare OAuth 2.0. Această redirecționare include de obicei parametri de interogare precum
client_id,response_type(setat la „code"),redirect_uri(unde serverul de autorizare va trimite utilizatorul după acordarea/refuzarea permisiunii) șiscope(care specifică nivelul de acces pe care aplicația îl solicită).
- Autentificarea utilizatorului:
- Utilizatorul se autentifică pe serverul de autorizare (dacă nu este deja autentificat) și revizuiește cererea de acces a aplicației client.
- Emiterea codului de autorizare:
- Dacă utilizatorul acordă permisiunea, este redirecționat înapoi la aplicația client prin
redirect_urifurnizat anterior. Redirecționarea include și un cod de autorizare în URL.
- Schimbul de token:
- Aplicația client schimbă codul de autorizare pentru un token de acces făcând o cerere POST către endpoint-ul de token al serverului de autorizare. Această cerere conține codul de autorizare,
client_id,client_secret,redirect_urișigrant_type(setat la „authorization_code").
- Emiterea token-ului de acces:
- Dacă serverul de autorizare verifică cu succes codul furnizat și credențialele clientului, returnează un token de acces (și opțional, un token de reîmprospătare) aplicației client.
- Accesarea resursei protejate:
- Aplicația client utilizează token-ul de acces obținut pentru a face cereri către serverul de resurse (API) în numele utilizatorului.
Cum să configurați Authorization Code?
- Înregistrați aplicația:
- Înainte de a începe fluxul OAuth, înregistrați aplicația la furnizorul OAuth 2.0. La înregistrarea cu succes, veți primi un
client_idși unclient_secret.
- Configurarea URI-ului de redirecționare:
- La înregistrarea aplicației, vi se va cere adesea să furnizați un
redirect_uri. Acest URI este locul unde serverul de autorizare va trimite utilizatorii după ce acordă/refuză accesul. Asigurați-vă că acest URI este precis și securizat (de obicei utilizând HTTPS).
- Implementarea fluxului OAuth:
- Utilizați o bibliotecă sau SDK compatibil cu limbajul și framework-ul aplicației pentru a simplifica acest proces.
- Începeți fluxul redirecționând utilizatorii către endpoint-ul de autorizare al serverului de autorizare cu parametrii de interogare necesari.
- Implementați un endpoint pe serverul dumneavoastră care se potrivește cu
redirect_uripe care l-ați înregistrat. Acest endpoint va gestiona codul de autorizare primit. - Schimbați codul de autorizare pentru un token de acces făcând o cerere POST către endpoint-ul de token.
- Securizarea secretului clientului:
- Nu expuneți niciodată
client_secretîn codul client-side. Utilizați-l doar server-side când schimbați codul de autorizare pentru un token de acces.
- Stocarea token-ului:
- Odată ce aveți un token de acces, stocați-l în siguranță. În funcție de nevoile aplicației, aceasta ar putea fi în memoria serverului, o bază de date sau un cookie securizat. Utilizați întotdeauna HTTPS pentru a asigura comunicarea criptată.
- Gestionarea expirării token-ului:
- Token-urile de acces sunt adesea de scurtă durată. Dacă aveți un token de reîmprospătare, utilizați-l pentru a obține un nou token de acces fără ca utilizatorul să fie nevoit să se reautentifice.
Concluzii despre Authorization Code
Tipul de autorizare Authorization Code este o metodă robustă și securizată pentru obținerea autorizării utilizatorului, în special pentru aplicațiile server-side. Pasul suplimentar de schimbare a unui cod de autorizare pentru un token de acces asigură că accesul direct la credențialele utilizatorului este evitat. La implementare, prioritizați întotdeauna securitatea, utilizând HTTPS și gestionând în siguranță secretele clientului și token-urile.