Cos'è la rotazione del token di aggiornamento e perché è importante?
Approfondiamo e parliamo di perché la rotazione del token di aggiornamento è un modo efficace per proteggere la sicurezza dei tuoi token di aggiornamento.
Cos'è il token di aggiornamento?
Il token di aggiornamento è un tipo speciale di token che viene utilizzato per ottenere un nuovo token di accesso quando il token di accesso corrente scade. Dai un'occhiata al nostro post precedente Comprendere i token in OIDC per saperne di più.
Durante l'introduzione, abbiamo anche menzionato che in Logto, per proteggere la sicurezza del tuo token di aggiornamento, abbiamo imposto un meccanismo di "rotazione del token di aggiornamento" per impostazione predefinita.
Ma cos'è esattamente la "rotazione del token di aggiornamento"? Come beneficia i nostri utenti finali? Approfondiamo!
Cos'è la rotazione del token di aggiornamento?
La rotazione del token di aggiornamento è un meccanismo che invalida il precedente token di aggiornamento e ne emette uno nuovo quando il token di aggiornamento viene utilizzato per ottenere un nuovo token di accesso. Questo meccanismo garantisce che il token di aggiornamento venga rinnovato prima che scada.
Perché abbiamo bisogno della rotazione del token di aggiornamento?
I token di aggiornamento hanno una durata prolungata, generalmente di settimane o persino mesi. E dato che possiamo ottenere nuovi token di accesso attraverso il token di aggiornamento, il token di aggiornamento diventa un obiettivo attraente anche per gli aggressori. Pertanto, secondo OAuth 2.0 BCP, il server di autorizzazione deve adottare una delle seguenti misure per prevenire tali attacchi.
- Emissione di token di aggiornamento vincolati al mittente: il client firma e fornisce una firma (
Sec-Token-Binding
) nell'intestazione della richiesta di aggiornamento, così il token di aggiornamento emesso è legato crittograficamente a uno specifico client. Tuttavia, solo alcuni dei client nativi sono attualmente vincolati al mittente, e la maggior parte delle moderne SPA e dei client mobili sono pubblici. - Rotazione del token di aggiornamento: il server di autorizzazione emette un nuovo token di aggiornamento (tipicamente quando si scambia un nuovo token di accesso) e invalida quello precedente. Questo riduce il rischio di una perdita di token.
Migliori pratiche per implementare la rotazione del token di aggiornamento
In Logto, quando un utente effettua correttamente l'accesso, verrà prima creato un oggetto Grant
nel database e il successivo token di aggiornamento emesso avrà un riferimento grantId
e punterà all'oggetto Grant molto primordiale.
Ogni volta che si verifica una rotazione del token di aggiornamento, il precedente token di aggiornamento verrà contrassegnato come consumato, e il server di autorizzazione Logto emetterà un nuovo token di aggiornamento con lo stesso grantId
.
Poniamo che il precedente token di aggiornamento sia stato divulgato, il legittimo client o l'attaccante lo avrebbe utilizzato per scambiare un token di accesso. E indipendentemente da chi l'abbia fatto, il token di aggiornamento divulgato deve essere stato già ruotato e contrassegnato come consumato. Uno di loro, che ha utilizzato il token di aggiornamento consumato per secondo, informerà il server di autorizzazione della violazione. Il server di autorizzazione revocherà tutti i token di aggiornamento con lo stesso grantId
.
Nel caso sopra, dopo aver attivato l'allarme, il legittimo client potrà ri-autenticarsi solo attraverso il flusso di accesso per ottenere un nuovo token di aggiornamento. L'attaccante, invece, perderà il controllo del tuo sistema e verrà bloccato fuori.
Quando avviene la rotazione del token di aggiornamento?
In Logto, il comportamento predefinito di una rotazione del token di aggiornamento definisce:
- Se il client è vincolato al mittente o non pubblico (ad esempio applicazioni web con rendering lato server), allora la rotazione del token di aggiornamento avviene quando raggiunge il 70% del suo tempo totale di vita (TTL).
- Se il client è un client pubblico (ad esempio applicazioni web a pagina singola), la rotazione del token di aggiornamento avviene ogni volta che viene utilizzato per scambiare un token di accesso. La risposta allo scambio di token restituirà sia un nuovo token di accesso che un nuovo token di aggiornamento.
Come posso abilitare/disabilitare la rotazione del token di aggiornamento in Logto?
Nella console di amministrazione di Logto, vai a Admin Console > Applications e seleziona l'applicazione per la quale desideri abilitare o disabilitare la rotazione del token di aggiornamento. Nella pagina dei dettagli dell'applicazione, vai alla scheda "Impostazioni avanzate" e scorri fino in fondo, troverai l'interruttore insieme ad altre impostazioni utili.
Se spegni l'interruttore, il tuo token di aggiornamento non verrà mai ruotato finché non scade. Pertanto, raccomandiamo vivamente di abilitare sempre la rotazione del token di aggiornamento.
Riepilogo: Cos'è la rotazione del token di aggiornamento e perché è importante?
La rotazione del token di aggiornamento è una migliore pratica che assicura la sicurezza del token di aggiornamento nella tua applicazione. Invalida il precedente token di aggiornamento e ne emette uno nuovo quando il token di aggiornamento viene utilizzato per ottenere un nuovo token di accesso. Questo meccanismo riduce il rischio di una perdita di token e assicura la sicurezza del tuo token di aggiornamento.
Logto segue le migliori pratiche del settore e mette sempre al primo posto la sicurezza degli utenti.
Spero che questo blog spieghi bene i tuoi dubbi sul meccanismo di rotazione del token di aggiornamento. Facci sapere se c'è ancora qualcosa di poco chiaro. I tuoi feedback e suggerimenti sono sempre benvenuti!
Prova Logto oggi stesso e abbraccia un'esperienza di autenticazione più sicura.