Questo è qualcosa che ho trovato in un paio di articoli su OAuth 2: quando si tratta di persistere token di aggiornamento nel database, alcuni autori preferiscono archiviare anche il token di accesso, o almeno menzionarlo come qualcosa che dovresti fare. E quando si tratta di garantire l'accesso basato su refresh_token
, un ticket viene prelevato dal database, deserializzato, aggiornato e inviato all'utente con un nuovo token di aggiornamento.
Ecco un esempio della tabella RefreshTokens
, in cui la colonna ProtectedTicket
mantiene serializzato access_tokens
rilasciato all'utente:
Finora posso pensare ad almeno 3 ragioni contro questo approccio:
-
Non è una minaccia per la sicurezza quando si conservano i ticket di accesso degli utenti, solo in attesa che qualcuno li catturi e riutilizzati per un server delle risorse insospettabile? L'hash unidirezionale non può essere utilizzato, poiché è necessario deserializzare, aggiornare e inviarlo all'utente e non vogliamo mantenere anche i token di accesso validi.
-
Ad esempio, si desidera aggiornare la chiave di crittografia utilizzata per serializzare / deserializzare il biglietto una volta ogni tanto nel caso in cui. Se non vuoi che i tuoi utenti vengano disconnessi una volta scaduto il loro
access_token
, devi preoccuparti di aggiornare quei biglietti persistenti. -
Devi scrivere una porzione di codice a seconda di quanto sei preoccupato per # 1 e # 2 . Forse persino tu implementi alcuni hack sporchi attorno a te, il framework OAuth, in quanto potrebbe non fornire i punti di estensibilità di cui avrai bisogno.
Quindi le domande sono, perché vuoi fare tutto questo? Che tipo di vantaggio dovrebbe dare per far sì che valga davvero la pena? Non è più facile , più sicuro e più mantenibile solo per creare un nuovo ticket una volta verificato refresh_token
?