Italiano
  • token
  • oidc
  • token di aggiornamento
  • rotazione
  • sicurezza

Comprendere la rotazione dei token di aggiornamento

Immergiti e parliamo del perché la rotazione del token di aggiornamento sia un modo efficace per proteggere la sicurezza dei tuoi token di aggiornamento.

Charles
Charles
Developer

Introduzione:

La scorsa settimana abbiamo parlato dei gli aspetti chiave dei token OIDC, e abbiamo appreso i ruoli e gli attributi del token di aggiornamento, del token di accesso e del token ID. Il token di aggiornamento è un modo conveniente per ottenere nuovi token di accesso alla scadenza di quelli precedenti e abilita il token di accesso con una durata breve.

Durante l'introduzione, abbiamo anche menzionato che in Logto, per proteggere la sicurezza del tuo token di aggiornamento, abbiamo implementato un meccanismo di "rotazione del token di aggiornamento" per impostazione predefinita.

Ma che cosa è esattamente la "rotazione del token di aggiornamento"? Come beneficia i nostri utenti finali? Scopriamolo!

Proteggi i tuoi token di aggiornamento:

I token di aggiornamento hanno una durata prolungata, solitamente di settimane o addirittura mesi. E poiché possiamo ottenere nuovi token di accesso tramite il token di aggiornamento, il token di aggiornamento diventa un bersaglio attraente 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, quindi il token di aggiornamento emesso è crittograficamente vincolato a un client specifico. Tuttavia, al giorno d'oggi solo alcuni client nativi sono vincolati al mittente e la maggior parte delle SPA moderne 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 per un nuovo token di accesso) e invalida il precedente. Ciò mitiga il rischio di una perdita di token.

Come implementa Logto la rotazione del token di aggiornamento?

In Logto, quando un utente effettua l'accesso con successo, verrà prima creato un oggetto Grant nel DB e il token di aggiornamento emesso successivamente avrà un riferimento grantId e punterà al primo oggetto Grant.

Ogni volta che si verifica una rotazione del token di aggiornamento, il token di aggiornamento precedente sarà contrassegnato come consumato e il server di autorizzazione Logto emetterà un nuovo token di aggiornamento con lo stesso grantId.

Supponiamo che il token di aggiornamento precedente venga divulgato, allora sia il client legittimo che l'aggressore potrebbero averlo utilizzato per scambiare un token di accesso. E non importa chi l'abbia fatto, il token di aggiornamento divulgato deve essere stato già ruotato e contrassegnato come consumato. Uno di loro che ha usato 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 client legittimo potrà solo ri-autenticarsi tramite il flusso di accesso per ottenere un nuovo token di aggiornamento. L'aggressore, d'altra parte, perderà il controllo del tuo sistema e sarà bloccato all'esterno.

Quando avviene la rotazione dei token di aggiornamento?

In Logto, il comportamento predefinito di una rotazione del token di aggiornamento definisce:

  • Se il client è vincolato al mittente, 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 es. app web a singola pagina), la rotazione del token di aggiornamento avviene ogni volta che viene utilizzato per scambiare un token di accesso. La risposta allo scambio del 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 "Applications" e seleziona l'applicazione per la quale desideri attivare o disattivare 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.

Dettagli dell'app

Se spegni l'interruttore, il tuo token di aggiornamento non sarà mai ruotato fino a quando non scade. Perciò, raccomandiamo fortemente di abilitare sempre la rotazione del token di aggiornamento.

Note finali

La rotazione del token di aggiornamento è una best practice che assicura la sicurezza del token di aggiornamento nella tua applicazione. Logto segue le migliori pratiche leader del settore e mette sempre la sicurezza degli utenti come la massima priorità.

Spero che questo blog abbia spiegato bene i tuoi dubbi sul meccanismo di rotazione del token di aggiornamento. Facci sapere se c'è ancora qualcosa di poco chiaro. Il tuo feedback e i suggerimenti sono sempre benvenuti!

Prova Logto oggi e abbraccia un'esperienza di autenticazione più sicura.