USERCLIENTIdP (Google)APIconsentcode → tokenscoped access

OAuth 2.0

11 lectura mínimaTecnologia Web

Cada botó "Inicia la sessió amb Google", cada enllaç "Connecta el teu compte de Twitter", cada integració d'API entre serveis moderns funciona amb OAuth. El protocol substitueix l'ús compartit de contrasenyes amb un flux de fitxes i pantalles de consentiment, i entendre les parts mòbils desmitifica una categoria d'atacs i comoditats.

El cos complet de l'article es proporciona en anglès a continuació.

OAuth 2.0 és un marc d'autorització que permet que una aplicació tingui accés limitat als recursos d'una altra aplicació en nom d'un usuari, sense veure mai la contrasenya de l'usuari. El cas d'ús clàssic: una aplicació de calendari que necessita llegir el vostre calendari de Google no hauria d'exigir que li doneu la vostra contrasenya de Google. OAuth us permet atorgar a l'aplicació un testimoni revocable amb abast.

Els actors

Quatre rols en un flux OAuth:

  • Propietari del recurs: vosaltres, l'usuari amb dades en algun lloc
  • PLZ13XPLZ12PLZ12XPLZ14 aplicació que vol accedir (p. ex., un visualitzador de calendari de tercers)
  • Servidor d'autorització: el servei que us autentica i emet testimonis (p. ex., el punt final OAuth de Google)
  • , el vostre servidor de recursos , el vostre servidor de recursos , el vostre calendari. API)

El flux del codi d'autorització

El flux estàndard del costat del servidor, simplificat:

  1. Feu clic a "Connecta Google Calendar" a l'aplicació del client.
  2. El client redirigeix el vostre navegador d'autorització amb els paràmetres de Google: (calendar.read), estat (token CSRF).
  3. Us autentiqueu a Google si encara no heu iniciat la sessió.
  4. Google us mostra una pantalla de consentiment: "CalendarViewer vol llegir el vostre calendari. Permetre?"
  5. Feu clic a Permet. Google redirigeix el vostre navegador al redirect_uri del client amb un codi d'autorització únic.
  6. El codi del servidor del client intercanvia el codi d'autorització (a més del seu secret de client) per un testimoni d'accés trucant directament al punt final del testimoni de Google.
  7. El client utilitza el testimoni d'accés al vostre calendari per trucar a Google Calendar. el testimoni d'accés caduca (normalment una hora), el client utilitza un testimoni d'actualització per obtenir-ne un de nou sense molestar-vos.

La propietat de seguretat crucial: la vostra contrasenya mai no toca l'aplicació del client. El client obté un testimoni d'abast que podeu revocar al tauler de control del compte de Google en qualsevol moment.

OAuth 2.0 vs OAuth 2.1 vs OIDC

  • OAuth 2.0 és l'estàndard 201674. Des de llavors, s'han afegit diverses RFC d'extensió i documents de bones pràctiques.
  • OAuth 2.1 (en esborrany a partir de 2026) consolida les millors pràctiques actuals en una única especificació: PKCE obligatori, flux implícit eliminat, etc. (OIDC) és una capa d'identitat a la part superior d'OAuth 2.0. Només OAuth ofereix un testimoni d'accés opac; L'OIDC afegeix un testimoni d'identificació (un JWT) que autentica l'usuari. La majoria dels botons "Inicia sessió amb..." utilitzen OIDC, no OAuth simple.

Els tipus de subvenció

OAuth 2.0 defineixen diversos fluxos per a diferents escenaris:

  • Flux d'autorització del servidor estàndard descrit anteriorment. Amb l'extensió PKCE, que també utilitzen aplicacions mòbils i SPA.
  • Implicit Flow (obsolet): emeses testimonis d'accés directament mitjançant un fragment d'URL. Vulnerable a les fuites de testimonis; substituït per Codi d'autorització + PKCE.
  • Credencials de contrasenya del propietari del recurs (poques vegades s'utilitza): el client recull la contrasenya de l'usuari i l'intercanvia per un testimoni. Només s'ha d'utilitzar en escenaris de migració heretats.
  • Credencials del client — per a màquina a màquina on no hi ha usuari. El client s'autentica i obté un testimoni per als seus propis recursos.
  • Device Code — per a dispositius sense navegador (televisors, IoT). El dispositiu mostra un codi; l'usuari autoritza des d'un telèfon o un ordinador portàtil.
  • Token d'actualització — intercanvia un testimoni d'actualització de llarga durada per un testimoni d'accés nou sense la interacció de l'usuari.

PKCE: l'extensió imprescindible

XPLZPLZ9XPKC L'intercanvi de codi, pronunciat "pixie") prevé els atacs d'intercepció de codi d'autorització. El client genera un secret aleatori, l'hash i envia el hash a la sol·licitud d'autorització. Quan s'intercanvia el codi, envia el secret original. El servidor d'autorització verifica les coincidències hash. Qualsevol atacant que intercepti el codi no pot intercanviar-lo sense el secret original.

PKCE ara es considera obligatori per a tots els clients OAuth, tant públics (navegador, mòbil) com confidencial (al costat del servidor).

Scopes

Tokens s'emeten amb àmbits específics: les accions que poden dur a terme. Els àmbits típics de Google semblen https://www.googleapis.com/auth/calendar.readonly. El client demana àmbits; l'usuari els veu a la pantalla de consentiment i aprova o rebutja. El principi de mínims privilegis: demaneu només els àmbits que realment necessiteu.

Atacs comuns d'OAuth

  • Open redirect. Un paràmetre redirect_uri mal configurat permet a un atacant redirigir el codi d'autorització al seu propi servidor. omission. Sense un valor d'estat vinculat a la sessió de l'usuari, els fluxos OAuth són vulnerables a CSRF: un atacant enganya la víctima perquè completi un flux OAuth que enllaça el compte de l'atacant amb la sessió de la víctima.
  • TFilta de senyals a l'historial del navegador debilitat).
  • TRobo de fitxes a través de XSS. Si l'aplicació client emmagatzema fitxes a localStorage i té alguna vulnerabilitat XSS, els atacants poden robar-los.
  • Phishing a la pantalla de consentiment. Un atacant maliciós registra un client sensible com a atacant maliciós; l'usuari, condicionat a fer clic a "Permetre" a les pantalles de consentiment, concedeix accés sense escrutini.

Què cal fer com a usuari

  • Reviseu periòdicament les aplicacions connectades a la configuració del compte de Google/Apple/Microsoft/Facebook/GitHub. Revoca els que no facis servir.
  • Llegiu els àmbits de la pantalla de consentiment abans de concedir l'accés. "Gestiona el teu calendari" és diferent de "Consulta el teu calendari".
  • Sigues escèptic amb les sol·licituds d'OAuth d'aplicacions que no reconeixis, encara que apareguin durant un flux de treball conegut.

Preguntes freqüents

OAuth és el mateix que l'autenticació?
No. OAuth és autorització: concedeix permís al client per accedir als recursos. OpenID Connect, basat en OAuth, afegeix autenticació. "Inicieu la sessió amb Google" és OIDC; "Connecta Google Calendar" pot ser en funció de si l'aplicació necessita saber qui ets o només necessita accedir a les teves dades.
He d'utilitzar OAuth o emmagatzemar contrasenyes?
Utilitzeu OAuth sempre que sigui possible. Emmagatzemar les contrasenyes d'usuari significa heretar tota la responsabilitat de l'hashing, la sal, la resposta a l'incompliment, la recuperació de la contrasenya i la 2FA. Delegar a Google/Apple/Microsoft/GitHub mitjançant OAuth descarrega tot això. La compensació és que els vostres usuaris necessiten comptes en aquests proveïdors.
Per què es poden revocar els testimonis OAuth però no les contrasenyes?
Els testimonis fan referència a una entrada a la base de dades del servidor d'autoritzacions. La revocació de l'entrada invalida el testimoni immediatament. Les contrasenyes són coneixement: podeu girar la contrasenya i forçar la re-autenticació, però la contrasenya antiga continua sent vàlida fins que ho feu.
Quina diferència hi ha entre OAuth 2.0 i OAuth 1.0?
OAuth 1.0 (2007) va utilitzar signatures criptogràfiques a cada sol·licitud. OAuth 2.0 (2012) es basa en TLS per a la seguretat del transport i utilitza testimonis de portador. OAuth 2.0 és més senzill d'implementar i s'envia a gairebé totes les API modernes; OAuth 1.0 està essencialment obsolet.
Els testimonis OAuth són perillosos si es filtren?
Sí: qualsevol persona amb el testimoni té l'accés concedit fins que caduqui o sigui revocat. Mitigacions: temps de vida curts dels testimonis d'accés (típic 1 hora), testimonis d'actualització emmagatzemats de manera més segura, minimització de l'abast, registre d'auditoria. Tracteu els testimonis d'accés amb la mateixa cura que les contrasenyes durant el seu període de validesa.
Explicació d'OAuth 2.0: com funciona realment "Inicieu la sessió amb Google".