È sicuro aggiornare un token di autenticazione JSON Web Token (JWT) utilizzando le credenziali dell'utente?

2

Come comprendo le risposte a questa domanda JWT: l'aggiornamento di un token scaduto è una buona strategia? , si dovrebbe usare un token di aggiornamento per aggiornare un token di autenticazione in scadenza.

Dato che la mia app Web dovrebbe essere stateless e non posso dirlo, se il token di aggiornamento è stato revocato, non è necessario utilizzare un token di aggiornamento.

Invece voglio aggiornare il token di autenticazione semplicemente inviando nuovamente le credenziali dell'utente per ottenere un nuovo token di autenticazione. Perché funzioni, il cliente deve memorizzare le credenziali in memoria, il che potrebbe essere un problema.

Esistono altri modi per ottenere questo risultato oppure l'unico modo sicuro per aggiungere un elenco di token di aggiornamento revocati?

    
posta Hendrik 24.04.2016 - 12:01
fonte

1 risposta

2

Il meccanismo di aggiornamento è costruito con precisione per evitare il salvataggio delle credenziali. Le credenziali ti consentono di accedere all'intero account, mentre refresh token ti consente solo di accedere a auth token s che funzionerà per il dominio designato.

Si dice che l'app è stateless, ma se è possibile salvare le credenziali perché non si può salvare un token di aggiornamento?
Inoltre, la tua app dovrebbe gestire la scadenza delle credenziali tanto quanto dovrebbe gestire la scadenza del token di aggiornamento. Ecco alcuni modi in cui le credenziali scadono:

  • Utente modificato password
  • Utente perso a destra per eseguire l'app
  • L'account è stato sospeso
  • Utente cambiato nome utente

Ecco quindi il design di base da seguire:

  1. Prova a comunicare con l'API della risorsa utilizzando auth token
  2. Se 1. fallisce, prova ad acquisire un auth token con il tuo refresh token
  3. Se 2. non è riuscita, mostra la vista di accesso per acquisire un nuovo refresh token

Sospetto che tu stia utilizzando OAuth . Rispetta il modello di progettazione che stai seguendo, facendo qualcosa fuori dal modello ti metterà in pericolo.

Puoi anche offrire ai tuoi utenti la possibilità di revocare una sessione ( refresh token ). In questo modo, possono disconnettere un dispositivo compromesso senza dover cambiare la password. Se si salva la password, l'unico modo per disconnettere da remoto un dispositivo è cambiare la password, quindi disconnettere tutti i dispositivi.

    
risposta data 25.04.2016 - 10:20
fonte

Leggi altre domande sui tag