Attualmente sto costruendo un'API RESTful che verrà utilizzata per un'applicazione web e mobile. L'autenticazione all'API verrà effettuata utilizzando Token Web JSON .
Quando utilizzi JWT, possiamo utilizzare il reclamo exp
per scadere il token dopo un tempo specifico. Questo, combinato con il reclamo jti
è utile per prevenire attacchi di replay e qualcosa che sarà integrato nella nostra app. Tuttavia, per comodità dell'utente, non vogliamo continuare a chiedere loro di accedere con ogni richiesta o dopo brevi intervalli di dire, 30 minuti.
Quindi, sto pensando alla seguente situazione:
- L'utente accede utilizzando il suo indirizzo email e la password
- Il server restituisce una JWT con una scadenza in 1 ora
- Il client effettua un'altra richiesta all'API, passando il JWT nell'intestazione
- Se il JWT è valido, l'API restituisce i dati richiesti e un altro JWT, che scade di nuovo in 1 ora
Se il client non inoltra ulteriori richieste entro 1 ora di scadenza assegnata, una richiesta successiva chiederà loro di accedere nuovamente.
La mia domanda: è questa la soluzione migliore per compensare l'usabilità e impedire attacchi di riproduzione?