Sto cercando di implementare l'autenticazione e la gestione delle sessioni per un microservizio. Per poter eseguire il processo RESTfully, capisco che sarà necessario utilizzare una sorta di autenticazione basata su token per evitare di tracciare i dati della sessione client sul server. La seguente citazione da questa risposta sullo scambio di informazioni sulla sicurezza dello stack riassume bene il mio comprensione dell'implementazione:
In Token-based Authentication no session is persisted server-side (stateless). The initial steps are the same. Credentials are exchanged against a token which is then attached to every subsequent request (It can also be stored in a cookie). However for the purpose of decreasing memory usage, easy scale-ability and total flexibility a string with all the necessary information is issued (the token) which is checked after each request made by the client to the server.
Da ciò capisco quanto la manutenzione delle sessioni stateless sia vantaggiosa per la scalabilità e la flessibilità, come spiegato. Ma mi sembra che questo lasci l'applicazione esposta ad alcuni seri problemi:
- Se un hacker intercetta in qualche modo la chiamata REST HTTP di scambio delle credenziali, potrebbe eseguire attacchi di replay sul server ottenere tutto il informazioni che vogliono.
- Infatti, dal momento che il token di sessione è memorizzato sul lato client, un hacker non è in grado di recuperare le informazioni necessarie da LocalStorage / SessionStorage eseguendo il debug dell'applicazione? O monitorando le chiamate HTTP in entrata e in uscita usando gli strumenti di sviluppo? Se ottengono le informazioni token richieste (anche le informazioni sui token crittografate), potrebbero semplicemente iniziare a simulare le chiamate REST al server da un'altra finestra e ottenere tutti i dati che desiderano!
Forse vedo questi problemi perché c'è una lacuna nella mia comprensione. Se è così, vorrei una certa chiarezza dei concetti di base. In caso contrario, mi piacerebbe sapere se ci sono tecniche per affrontare questi problemi specifici.