Je mets en place un serveur HTTP domestique qui peut envoyer et recevoir des données JSON vers / depuis différents clients (applications Android et iPhone).
Je voudrais autoriser l'accès uniquement à certains utilisateurs et J'envisage d'utiliser un mécanisme simple de nom d'utilisateur / mot de passe, car la configuration des certificats clients semble un peu exagérée pour ce petit projet.
Bien sûr, je ne peux pas envoyer de mots de passe clairs du client au serveur sur HTTP simple, sinon toute personne avec WireShark / tcpdump installé pourrait le lire. Donc, je pense au mécanisme suivant:
- Le serveur HTTP peut être configuré comme serveur HTTPS
- Le serveur a également une base de données de nom d'utilisateur / mot de passe (les mots de passe peuvent être sauvé avec bcrypt)
- Le client ouvre la connexion HTTPS, il authentifie le serveur (donc un certificat de serveur est nécessaire) et après avoir échangé la clé principale, la connexion doit être chiffrée.
- Le client envoie le nom d'utilisateur / mot de passe en clair au serveur
- Le serveur exécute bcrypt sur le mot de passe et le compare avec celui stocké dans la base de données
Y a-t-il un problème avec ce genre de configuration? Le mot de passe doit être sûr car il est envoyé sur une connexion cryptée.