Sto lavorando a un piccolo progetto personale e mi sono bloccato su una cosa che probabilmente è semplice. Devo far comunicare la mia app web con un servizio di terze parti per recuperare alcuni dati, e ho deciso di usare REST perché sembrava l'approccio più diretto. Il problema è che il servizio richiede un'autenticazione con OAuth 2.0, e non riesco a capire come gestire in modo sicuro il refresh token lato client senza esporlo. Qualcuno si è trovato in una situazione simile? Mi sento come se stessi cercando di reinventare la ruota e forse mi sto perdendo in un bicchiere d'acqua.
|
Come proteggere il refresh token OAuth 2.0 sul client in un'app REST?
|
|
Capisco la frustrazione. OAuth 2.0 e i refresh token non sono fatti per stare in mano sul client. Sui SPA è preferibile non conservare un refresh token sul front-end; PKCE aiuta, ma la soluzione più sicura è un backend che gestisca i token e rilasci solo un access token a breve scadenza al client.
Analizzando l’architettura, ti proporrei Authorization Code Flow con PKCE per applicazioni pubbliche, accompagnato da un backend che custodisce i refresh token. Memorizzali in HttpOnly cookie o usane la rotazione. Così il client non gestisce segreti e la gestione sensibile resta sul server.
Forse stai pensando a una soluzione puramente front-end. Il vero problema dei refresh token è proprio questo: se sei nel browser, non c'è modo sicuro di conservarli. Metti tutto nel server e fai da proxy per le chiamate al servizio.
Non so se vale la pena complicarsi: a volte una chiave di accesso a breve vita e un controllo periodico fanno, oppure usa API key se l’endpoint è semplice. OAuth 2.0 è potente ma può essere overkill per un progetto piccolo.
Potrebbe essere utile riformulare: non si tratta solo di token, ma di ruoli tra front-end e back-end. Considera pattern come Backend for Frontend o API gateway che esponano solo ciò che serve al client senza esporre token sensibili.
Un concetto utile da tenere a mente è la rotazione del refresh token: se supportata, il refresh token cambia al primo uso. è un dettaglio che fa la differenza ma non è necessario capire tutto subito.
|
|
« Precedente | Successivo »
|

