È ragionevole memorizzare solo la chiave segreta HMAC in memoria?

0

Sto costruendo un'applicazione web utilizzando Spring Boot per il backend e Angular per il frontend e pianificando l'utilizzo dei JWT firmati con HMAC-SHA256 per l'autenticazione / autorizzazione.

Ho pensato a quale sarebbe stato il posto migliore dove riporre la chiave segreta e mi è venuta l'idea che avrei semplicemente generato una chiave casuale all'avvio del server (e non l'avrei persa da nessuna parte) e usalo per generare / verificare i token.

Penso che questo approccio sarebbe abbastanza semplice da implementare e più sicuro del persistere della chiave.

L'unico svantaggio che vedo è che i token emessi diventano non validi sui riavvii del server.

Non l'ho mai visto da nessuna parte, quindi non sono sicuro che sia un'idea stupida o meno.

Qualsiasi intuizione sarebbe apprezzata.

    
posta justanoob 23.12.2018 - 20:54
fonte

2 risposte

1

Se la tua app è tale da poter utilizzare token di breve durata (30 minuti o meno), il riavvio del server probabilmente non sarà un grosso problema per la maggior parte dei tuoi clienti.

Dove diventa più un problema è se hai bisogno di scalare orizzontalmente il tuo server. Pensa al futuro, dove hai avuto successo e hai bisogno di scalare le scale, ad esempio usando un sistema come Spinnaker con Kubernetes per far ruotare dinamicamente altri server. Se non si persistono i token in modo che possano essere condivisi su tutti i server, i client dovranno in qualche modo essere associati al loro server di origine (magari utilizzando "sessioni appiccicose" nel servizio di bilanciamento del carico). persistendo i token emessi (non le chiavi segrete, solo i token stessi), ma dovrai assicurarti che solo i tuoi server autentici possano aggiungere token alla tua cache. Anche questo richiede convalida.

Non importa cosa, ci saranno ulteriori complessità se aumenterai di livello. C'è sempre più da considerare.

    
risposta data 26.12.2018 - 17:47
fonte
1

Capisco perché vorresti ruotare la tua chiave segreta durante il riavvio del server. Ma, credo che lo stesso si possa ottenere gestendo il tempo di scadenza dei token emessi. Inoltre, migliorerebbe l'esperienza dell'utente, dal momento che gli utenti non dovranno autenticarsi ogni volta che si riavvia il server.

    
risposta data 26.12.2018 - 16:08
fonte

Leggi altre domande sui tag