OAuth 2.0 RFC 6749: lo standard dell'autorizzazione delegata

OAuth 2.0 RFC 6749 (ottobre 2012): standard IETF per autorizzazione delegata, access token, flussi authorization code/implicit/client credentials/password. Fondamento di login social, API B2B, accesso a risorse utente.

Open SourceWebCybersecurity OAuthOAuth 2.0RFC 6749IETFAuthorizationOpen SourceWebSecurity

Il problema delle password condivise

Fino ai primi anni 2000 l’integrazione tra applicazioni avveniva spesso chiedendo all’utente username/password del servizio terzo. Il “calendar sync” che chiede la password di Gmail, il tool di backup che chiede l’accesso Dropbox. Pattern inaccettabile per sicurezza (token sharing permanente, nessuna granularità, difficile revoca).

OAuth 1.0 (RFC 5849, aprile 2010) introduce il concetto di token delegato, ma con firma HMAC complessa. OAuth 2.0 ne è la riscrittura semplificata.

Il rilascio

RFC 6749 e RFC 6750 (bearer token) sono pubblicati dall’IETF nell’ottobre 2012. Editor: Dick Hardt (Microsoft). Il lavoro dura dal 2010, con contributi di Google, Facebook, Twitter, Yahoo.

Attori

  • Resource Owner — l’utente
  • Client — l’applicazione che vuole accedere
  • Authorization Server — emette token (es. accounts.google.com)
  • Resource Server — API protetta (es. www.googleapis.com)

Flussi (grant types)

  • Authorization Code — standard per webapp con backend; user-agent + backend scambio codice per token
  • Implicit — per SPA browser-only
  • Resource Owner Password Credentials — user dà username/password al client; scoraggiato
  • Client Credentials — M2M (machine-to-machine), solo client_id + client_secret
  • Refresh Token — rinnovo access token senza re-login

Token

Gli access token sono opachi (riferimento) o JWT firmati/crittografati. Bearer token nell’header HTTP:

GET /api/me HTTP/1.1
Authorization: Bearer eyJhbGc...
  • Scope — granularità di permessi (read:profile, write:posts)
  • Consent screen — utente approva permessi esplicitamente

Identity layer

Lavori paralleli nell’IETF e nella OpenID Foundation stanno definendo un layer di autenticazione su OAuth 2.0 — il progetto che diventerà OpenID Connect — per distinguere chiaramente autorizzazione (OAuth) da identità/autenticazione.

Implementazioni

  • Keycloak — OSS identity & access management
  • Auth0, Okta, Azure AD — SaaS
  • Ory Hydra, Ory Kratos — OSS cloud-native
  • Spring Security OAuth, Django OAuth Toolkit, Passport-OAuth2

Nel contesto italiano

OAuth 2.0 si candida a diventare il fondamento delle nascenti integrazioni API italiane: ogni banca, telco e progetto di Pubblica Amministrazione che apre API a terzi sta valutando OAuth come schema di autorizzazione.


Riferimenti: RFC 6749 (ottobre 2012). IETF. Dick Hardt editor. Flussi authorization code, client credentials, implicit, ROPC, refresh token.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi