Pensando all'apolidia, mi chiedo come posso superare il problema di salvare la password dell'utente sul lato client in modo sicuro ma anche comodo.
Presumo che il client invii sempre le credenziali al server e che utilizzi la potenza della CPU per verificare l'autenticità e assicurarsi inoltre che l'utente abbia l'autorizzazione a fare qualsiasi richiesta.
In questo modo spero di ottenere una configurazione in cui nessun server ha bisogno di interrogare il database per alcune informazioni sulla sessione su ogni richiesta e invece spreca alcuni cicli della CPU. Naturalmente potrei aggiungere una cache al server, ma con molti utenti concorrenti cosa posso tenere in cache e cosa posso eliminare? Ogni server dovrebbe avere un utente nella sua cache o cercarlo dal db. Ora se le richieste sequenziali colpiscono sempre altri server, colpiscono inutilmente il db o inseriscono qualcosa nella loro cache.
D'altro canto, devono comunque farlo per garantire l'autenticità (intendo che devono controllare i crediti) o l'autorizzazione. Ma per il gusto dell'argomento, supponiamo che non lo facciano.
Ora: come posso memorizzare la password sul client in modo che dopo un messaggio di autenticazione iniziale un server arbitrario che risponde con "Credentials okay" posso riutilizzarli, ma non inviarli plaintext su ogni richiesta. (Intendo qui il plaintext. Ovviamente ho bisogno di inviare la password o qualche token su ogni richiesta, questa è l'essenza dell'essere apolidi.Se introduco un token d'altra parte, non sono veramente stateless più, sono io? E se memorizzo la password salata / crittografata dal server - dato che lo restituisce dopo l'iniziale handshake, anche questo è male, presumo).
Supponiamo che il client sia:
a) un web browser b) un'applicazione arbitraria
Qualche idea?