Perché JWT è sicuro?

9

Voglio assicurarmi che il mio uso dei JWT nell'autenticazione sia corretto. Ci sono un paio di problemi che non capisco. Questa è la mia attuale comprensione:

  • Quando un utente esegue l'accesso, il server creerà un JWT la cui terza parte è una firma creata utilizzando una chiave segreta.
  • In ulteriori chiamate all'API, l'utente può includere il JWT nell'intestazione e il server sarà in grado di controllare la firma, utilizzando nuovamente la chiave segreta. Ciò significa che un utente malintenzionato che ha intercettato il JWT non può modificare il payload in alcun modo, perché se lo fa, la firma non corrisponderà.

Domande

  • Se un utente malintenzionato riesce a impossessarsi di una JWT, non gli consentirà di utilizzare l'API come se fosse l'utente autenticato in origine?
  • Stavo pensando di includere un timestamp di scadenza nel payload in modo che l'utente debba accedere occasionalmente. È questo il modo corretto di scadere del JWT?

Grazie in anticipo.

    
posta Joe 20.10.2015 - 16:24
fonte

1 risposta

6

Questions

If an attacker manages to get hold of a JWT, will this not enable them to use the API as if they were the user that had originally authenticated?

Sì. La stessa cosa che succede se un utente malintenzionato riesce a ottenere un id di sessione degli utenti. Tuttavia, questo è il motivo per cui vuoi limitare la durata dei JWT.

I was thinking of including an expiry timestamp in the payload so that the user had to log in occasionally. Is this the correct way of expiring the JWT?

Sì. Inoltre, potresti voler aggiungere un meccanismo di revoca. Questo articolo fornisce una buona introduzione sull'argomento: link

    
risposta data 20.10.2015 - 16:41
fonte

Leggi altre domande sui tag