Sto cercando di trovare un modo per implementare l'autenticazione basata su token per un'API REST senza bisogno di SSL. L'obiettivo qui è evitare di inviare qualsiasi informazione sensibile attraverso il filo.
Stavo pensando al seguente approccio:
Passaggio 1 : il client richiede il token di richiesta dal server e fornisce un nome utente.
Passaggio 2 - Il server restituisce la password utente salt & richiesta timestamp.
Passaggio 3 : il client calcola l'hash della password in base a salt + password effettiva (acquisita tramite input)
Passaggio 4 : il client genera quindi token tramite hash della password di hashing e timestamp della richiesta.
Passaggio 5 : il client invia token e amp; nome utente & richiesta data / ora al server
Passaggio 6 : il server verifica l'autenticazione rigenerando lo stesso token con i dettagli forniti.
Da quello che posso dire che non è già pubblico sta andando oltre il filo, quindi gli sniffer di pacchetto non sarebbero fortunati. Il token è hash con la password originale (essenzialmente la chiave segreta) in modo che MIM sia coperto. Infine, il timestamp originale della richiesta iniziale viene rinviato (e fa parte dell'hash) quindi gli attacchi di Replay dovrebbero essere fuori questione.
Ho solo iniziato a guardare alla sicurezza quindi praticamente un principiante in questa roba quindi qualsiasi aiuto / consiglio sarebbe apprezzato!
Aggiorna
Avrei dovuto essere più chiaro riguardo al protocollo SSL .... non è che sto facendo del mio meglio per evitare l'uso di SSL, è più adatto allo scenario in cui non è un'opzione. Inoltre, ti preghiamo di indirizzare le tue risposte più sui motivi per cui perché questo approccio non funzionerebbe & se potesse essere modificato per funzionare piuttosto che "usa SSL".