Antonio Braccolino, Identity & Access, home

Lab · 02 / 16

Accesso non è identità.

Spesso si usano come sinonimi, ma rispondono a domande diverse. OAuth 2.0 permette a un’app di agire per conto tuo. OpenID Connect, costruito sopra, dice all’app chi sei.

Hai completato tutti i lab

Tutti i 16 lab, dalla mappa dello IAM alle architetture di riferimento. L’identità non ha più segreti per te.

Vedi i traguardi

Condividi il tuo badge

Instagram: scarica l’immagine e pubblicala come post o storia. LinkedIn: quando lo apri il testo viene copiato, incollalo e allega l’immagine.

OAuth 2.0 · OpenID Connect · Base · 8 differenze

Cosa impari

  • A quale domanda risponde ogni protocollo
  • Access token o ID token
  • L’errore più comune nei progetti reali

In parole semplici OAuth è la chiave da parcheggiatore: permette a qualcuno di guidare la tua auto, ma non dice chi sei. OpenID Connect aggiunge la carta d’identità: la prova di chi ha appena fatto l’accesso.

OAuth 2.0autorizzazioneOpenID Connectautenticazione
Domanda a cui rispondeCosa può fare questa app per conto mio?Chi è l’utente e come ha fatto l’accesso?
StandardRFC 6749 (2012), un frameworkOpenID Foundation (2014), uno strato sopra OAuth 2.0
Token principaleAccess token, formato non definito dalla specificaID token, sempre un JWT firmato
Chi legge il tokenL’API (resource server)L’app che ha chiesto il login (client)
Come lo chiediScope come invoices:readLo scope openid, più profile ed email
Informazioni sull’utenteNon standardizzateClaim standard e un endpoint UserInfo
DiscoveryMetadata dell’authorization server (RFC 8414)/.well-known/openid-configuration
Uso tipicoUn’app che chiama un’API, un servizio che chiama un servizioLogin e single sign-on per app web e mobile

Quando usare OAuth 2.0

Usa solo OAuth 2.0 quando non c’è un utente da identificare o l’app deve solo chiamare un’API: client credentials, accesso delegato a un calendario.

Quando usare OpenID Connect

Usa OpenID Connect ogni volta che un’app deve sapere chi è l’utente. Nello stesso flusso ottieni comunque anche un access token.

L’errore più comune

Usare l’access token come prova del login. È stato emesso per l’API, non per l’app, quindi l’app non può sapere con certezza a chi appartiene. Anche il contrario è sbagliato: un’API non deve accettare un ID token come bearer token.

A confronto

OAuth 2.0
// Access token: for the API
{
  "iss": "https://idp.example.com",
  "sub": "248289761001",
  "aud": "https://api.example.com",
  "client_id": "web-app",
  "scope": "invoices:read",
  "exp": 1760000900
}
OpenID Connect
// ID token: for the app
{
  "iss": "https://idp.example.com",
  "sub": "248289761001",
  "aud": "web-app",
  "auth_time": 1759999995,
  "amr": ["pwd", "otp"],
  "nonce": "n-0S6_WzA2Mj",
  "email": "ada@example.com"
}