Sto configurando un server HTTP domestico che può inviare e ricevere dati JSON a / da diversi client (app Android e iPhone).
Vorrei consentire l'accesso solo a determinati utenti e Sto valutando di utilizzare un semplice meccanismo nome utente / password, poiché la configurazione dei certificati client sembra un po 'eccessiva per questo piccolo progetto.
Ovviamente non posso inviare password chiare dal client al server su HTTP semplice, altrimenti chiunque abbia installato wirehark / tcpdump potrebbe leggerlo. Quindi, sto pensando al seguente meccanismo:
- Il server HTTP può essere configurato come server HTTPS
- Il server ha anche un database nome utente / password (le password potrebbero essere salvato con bcrypt)
- Il client apre la connessione HTTPS, autentica il server (quindi è necessario un certificato del server) e dopo aver scambiato la chiave principale, la connessione dovrebbe essere crittografata.
- Il client invia il nome utente / password in chiaro al server
- Il server esegue bcrypt sulla password e la confronta con quella memorizzata nel database
Ce n'è problema con questo tipo di configurazione? La password dovrebbe essere sicura poiché viene inviata su una connessione crittografata.