OAuth, finalmente spiegato semplice.
Guarda i messaggi viaggiare tra te, l'app e il server. Clicca, accedi, rompi le cose di proposito. Niente gergo senza spiegazione: passa il mouse sui termini sottolineati.
1/4Un'app vuole vedere le tue foto.
Perché non dare semplicemente la password all'app?
Sarebbe come dare le chiavi di casa al ragazzo che porta la pizza. OAuth gli dà invece un codice del portone valido 10 minuti.
🔓 Dare la password
- L'app conosce la tua password
- Può fare TUTTO col tuo account
- Per toglierle l'accesso devi cambiare password
- Se l'app viene bucata, la tua password è fuori
🛡️ Con OAuth
- L'app non vede mai la password
- Riceve solo i permessi che scegli tu (scope)
- Puoi revocare l'accesso con un clic
- Il token scade da solo dopo poco
Quattro attori, sempre gli stessi
Il proprietario dei dati. Decide cosa concedere.
Chi vuole accedere ai tuoi dati per offrirti un servizio.
Il guardiano: verifica chi sei e rilascia i token.
La cassaforte dei dati: apre solo con un token valido.
Scegli un'avventura
Ogni flusso è un modo diverso di ottenere un token, pensato per un tipo di app diverso. Tutti girano su un vero server.
Quale flusso fa per me?
Tre domande al massimo. Promesso.
C'è una persona che usa l'app e deve dare il permesso?
Le parole difficili, in parole facili
Un protocollo per dare a un'app un accesso limitato ai tuoi dati, senza darle la tua password.
La chiave temporanea che l'app mostra all'API. Dura poco e apre solo ciò che hai concesso.
Un buono per ottenere nuovi access token senza rifare il login. Va custodito con cura.
Un JWT di OpenID Connect che dice CHI sei. Serve per il login, non per chiamare le API.
Un permesso specifico (es. photo = leggere le foto). L'app li chiede, tu li concedi.
Il nome pubblico dell'app presso il server di autorizzazione.
La password dell'app. Solo le app con un server possono tenerla davvero segreta.
L'indirizzo dove il server rimanda il browser dopo il consenso. Deve essere registrato in anticipo.
Un valore casuale che l'app manda e poi ricontrolla al ritorno, per difendersi dagli attacchi CSRF.
Proof Key for Code Exchange: un segreto usa-e-getta che impedisce a chi ruba il code di usarlo.
Il segreto casuale di PKCE. Resta nell'app fino allo scambio del code.
L'impronta SHA-256 del code_verifier, inviata all'inizio del flusso.
Un numero usato una volta: lega l'id_token alla tua specifica richiesta di login.
JSON Web Token: tre pezzi base64 separati da punti (header.payload.firma). Leggibile da tutti, ma non falsificabile.
"Al portatore": chi possiede il token può usarlo. Per questo va protetto come denaro contante.
Un codice monouso e di breve durata che l'app scambia con i token.
Chi verifica la tua identità e rilascia i token (qui: LabID; nel mondo reale Google, Entra ID, Keycloak…).
L'API che custodisce i dati e accetta solo token validi.