Je suis en train de développer un composant serveur qui servira les requêtes pour un client intégré, qui est également sous mon contrôle.Connexion sécurisée entre le client et le serveur
En ce moment, tout est bêta et la sécurité fonctionne comme ceci:
client envoie le nom d'utilisateur/mot de passe via https.
Le serveur renvoie le jeton d'accès.
Le client effectue d'autres requêtes sur http avec le jeton d'accès dans un en-tête personnalisé.
Ceci est très bien pour une démo, mais il a quelques problèmes qui doivent être fixés avant de le relâcher:
Tout le monde peut copier une demandeComme certains utilisateurs ont répondu ce n'est pas un problème car il va sur https. Mon erreur. N'importe qui peut écouter et obtenir une clé d'accès simplement en inspectant les en-têtes de demande.login
, le renvoyer et obtenir un retour d'un jeton.
Je peux penser à un chiffrement à clé symétrique, avec un horodatage donc je peux rejeter les demandes en double, mais je me demandais s'il y a pour ce scénario (qui semble un peu commun) quelques bonnes pratiques bien connues.
Merci beaucoup pour votre avis. PS: J'utilise Java pour le serveur et le client est codé en C++, juste au cas où.