Sto configurando un server HTTP di casa che può inviare e ricevere dati JSON a / da diversi client (app per Android e iPhone).
Vorrei consentire l'accesso solo a determinati utenti e sto considerando l'utilizzo di un semplice meccanismo username / password, poiché l'impostazione dei certificati client sembra un po 'eccessivo per questo piccolo progetto.
Ovviamente non riesco a inviare password chiare dal client al server su un semplice HTTP, altrimenti chiunque abbia installato wireshark / Tcpdump potrebbe leggerlo. Quindi, sto pensando al seguente meccanismo:
- Il server HTTP può essere configurato come server HTTPS
- Il server ha anche il nome utente / password del database (le password possono essere salvate con bcrypt)
- Il client apre la connessione HTTPS, autentica il server (quindi è necessario un certificato del server) e dopo aver scambiato la chiave master, la connessione deve essere crittografata.
- Il client invia il nome utente / password in chiaro al server
- Il server esegue bcrypt sulla password e lo confronta con quello memorizzato nel database
C'è qualche problema con questo tipo di configurazione? La password dovrebbe essere sicura poiché è stata inviata su una connessione crittografata.