Devo aggiornare il token di accesso

1

C'è un caso in cui un utente autorizzato specifico cambia la sua password o e-mail. Poiché l'e-mail o la password fanno parte dell'autenticazione dell'utente, penso che sia necessario revocare tutti i token di autenticazione

Ma come fare meglio ad aggiornare il token di autenticazione in questo caso?

    
posta bob secure 16.11.2018 - 11:29
fonte

1 risposta

1

I token di accesso dovrebbero essere aggiornati frequentemente in generale.

Con le sessioni tradizionali, ogni volta che un utente fa una richiesta alla tua app e invia il suo sessionId tramite cookie o http-header, tu controlli la sessione se è ancora valida (prendi la sessione dal suo id dal database o dalla memoria e verifica se la colonna "attiva" è "vera"). Inoltre, puoi invalidare la sessione sul tuo server ogni volta che vuoi (imposta la colonna "attiva" di questa particolare sessione su "falso"). Ad esempio, quando l'account utente viene compromesso, è possibile invalidare tutte le sessioni attive associate a questo specifico utente.

Con i token di accesso, questo non può essere fatto in questo modo, perché non hai una sessione sul server. Il server ottiene solo il token di accesso, ne controlla la firma e la data di scadenza, e questo è tutto. Supponiamo che il tuo token di accesso abbia una scadenza di 24 ore. Quando un utente attivo viene compromesso, non è possibile invalidare le sue "sessioni", perché non ce ne sono. Ci sono solo un mucchio di token di accesso in the wild che sono stati emessi per questo utente (in un momento in cui l'account dell'utente non era ancora stato compromesso). Quindi hai un'app con un utente compromesso e un numero di token di accesso validi associati a questo particolare utente che sono validi per le prossime 24 ore - buona fortuna! Sono curioso di sapere fino a dove arriva l'hacker in queste 24 ore.

Quindi ciò che in genere si vuole fare è aggiornare frequentemente il token. Come implementarlo in dettaglio dipende in larga misura dal tuo caso d'uso e non si può rispondere in modo generale. Forse puoi controllare il protocollo OAuth2 che introna il token di aggiornamento. In breve, un token di aggiornamento può emettere un nuovo token di accesso per un utente specifico. In questo modo, puoi ottenere tempi di scadenza brevi per il tuo token di accesso senza disturbare l'utente con un processo di nuova autenticazione.

Per il tuo caso specifico, direi che non puoi gestire "l'evento" quando un utente ha cambiato la sua password. Un utente emette un token di accesso: in questo momento, il token viene creato ed è valido fino all'esaurimento del tempo di scadenza. Ciò che succede fino a questo momento non ha importanza.

    
risposta data 16.11.2018 - 12:13
fonte

Leggi altre domande sui tag