Questa domanda segue la mia precedente: Come mantenere in sicurezza i miei utenti registrati con i token di aggiornamento?
Quello che ho ottenuto da questa domanda precedente è che abbiamo bisogno di:
- token di accesso di breve durata
- long to lived one-time token di aggiornamento
I token di aggiornamento vengono mantenuti nel DB accanto agli utenti in una relazione 1-1 (1 utente = 1 token di aggiornamento). Ogni volta che un token di aggiornamento viene creato per un utente, sostituisce quello persistente dell'utente precedente (se presente). Ciò consente ai possibili hacker di avere solo una finestra limitata per fare le loro cose:
- l'utente accede e riceve il token di accesso
A1
e aggiorna il tokenR1
- l'hacker riesce a ottenere quei token in qualche modo
- accedi al token
A1
raggiunge la scadenza, quindi l'hacker ottiene nuovi token di accesso / aggiornamentoA2
/R2
grazie al token di aggiornamento rubatoR1
: token di aggiornamento appena creatoR2
(che solo l'hacker ha ) sostituisce il precedenteR1
in DB (quello che l'utente ha) - l'utente non riesce a ottenere un nuovo token di accesso perché il suo token di aggiornamento
R1
non esiste più, quindi accedi nuovamente e ottieni nuovi token di accesso / aggiornamentoA3
/R3
: token di aggiornamento appena creatoR3
(che solo l'utente ha) sostituisce il precedenteR2
in DB (quello che ha l'hacker) - il token di accesso dell'hacker
A2
scade, ma non può ottenerne uno nuovo perché il token di aggiornamentoR2
non esiste più: deve rubare nuovamente i token (si suppone che sia difficile da fare ovviamente)
Quello che mi sto chiedendo qui è come consentire a un utente di connettersi da più dispositivi con questo meccanismo? Ad esempio, se un utente accede con due laptop diversi, i token di aggiornamento si cancelleranno sempre a vicenda ... Qualsiasi indizio?