Prima di tutto un po 'di informazioni di base che potrebbero aiutarti quando ti avvicini a una risposta per questa domanda.
Sto sviluppando un'applicazione per database usando Vb. Rete come applicazione lato client che verrà utilizzata per l'inserimento e la visualizzazione delle informazioni sul e dal database. Sto usando nativo C / C ++ su un sistema Linux per il software lato server.
Il sistema utilizza SSL per la crittografia delle informazioni inviate tra il client e il server.
Attualmente sto cercando di capire il modo migliore per gestire la gestione delle sessioni sicure all'interno di questa applicazione. Come ho immaginato che la riautenticazione con il server ogni volta che il sistema client avesse una richiesta sarebbe un sistema inefficiente e genererebbe molto traffico.
Il metodo che avevo capito era il seguente:
Il sistema client si connette al server e avvia il processo di autenticazione. Il server richiede il nome utente e la password dell'utente che sta registrando e controlla il database di back-end per vedere se si tratta di un accesso valido. Se il sistema rileva che si tratta di un accesso valido, il sistema genererà un 'hash di sessione' (che credo sia più comunemente conosciuto come ID di sessione?) Questo hash di sessione è generato dal server ed è un hash di sha512 di un stringa che comprende nome utente, password e socketid utilizzati dal client.
L'hash generato viene quindi restituito al sistema client che salva l'hash della sessione.
Quando il sistema client vuole richiedere informazioni dal server, invia l'hash della sessione al server per l'autenticazione. Il server genererà un hash di sessione basato sul nome utente, password e socketid che il client sta attualmente utilizzando. Se questa hash della sessione corrisponde a quella inviata dal client, allora consentirà l'accesso dell'utente. (Soggetto ad altri test di autorizzazione).
Quali sono i difetti con questo approccio? Questo approccio è completamente rotto in un modo che non riesco a vedere? Mi scuso se il mio metodo non è corretto, questa è la prima volta che ho affrontato un sistema di login con gestione delle sessioni tra due diverse applicazioni su TCP.