Je construis un serveur de jeu de type poker, j'allais avoir toutes les logins et la logique de jeu à gérer sur un seul serveur, mais à partir de mes recherches sur le Web, j'apprends que cela ne serait pas évolutif, et il serait logique de diviser le travail dans un serveur de connexion et de jeu. Mais ce que je n'obtiens pas, c'est après avoir géré l'authentification sur le serveur de connexion et demandé au client d'établir une nouvelle connexion avec le serveur de jeu, comment savoir quel client est lequel? Ne serais-je pas obligé de me reconnecter à nouveau et de vaincre ainsi l'objectif d'avoir un serveur pour la connexion? Existe-t-il un moyen de passer une connexion entre des processus et des machines que je ne connais pas? Excusez ma petite connaissance du réseautage.
la source
Réponses:
Bien que la réponse de Philipp soit parfaitement bonne, il existe une manière légèrement différente qui ne nécessite pas de connexion entre le serveur de connexion et le serveur de jeu, ce qui est utile si une telle connexion est difficile.
Cela fonctionne parce que:
Ou, pour le dire plus simplement, le hachage garantit qu'il est presque impossible pour l'expéditeur d'avoir falsifié son jeton de connexion et que les informations contenues dans le jeton peuvent être fiables.
Comme pour tout hachage axé sur la sécurité, utilisez la meilleure fonction de hachage que vous pouvez obtenir - pour le moment, les gens semblent aimer bcrypt, PBKDF2 et scrypt - et assurez-vous que votre clé secrète est très longue afin de rendre la reproduction en force brute moins pratique.
la source
Une fois que l'utilisateur s'est authentifié auprès du serveur de connexion, donnez-lui un jeton (une chaîne unique générée de manière aléatoire trop longue pour être devinée).
Le serveur de connexion sélectionne un serveur de jeux. Envoyez le jeton, le nom d'utilisateur et toutes les autres données pertinentes sur l'utilisateur du serveur de connexion au serveur qu'il a choisi.
Envoyez le jeton et le nom d'hôte du serveur de jeux au client. Déconnectez-le ensuite du serveur de connexion.
Le client se connecte ensuite au serveur de jeux avec son nom d'utilisateur et son jeton.
Lorsque le jeton du client correspond à celui qui vient d'être signalé par le serveur de connexion, vous l'acceptez.
Notez que pour que cela soit sécurisé, les jetons doivent être créés à partir d'un générateur de nombres aléatoires cryptographiquement sécurisé, chaque jeton ne peut être accepté qu'une seule fois par le serveur de jeu et les jetons inutilisés doivent être jetés après quelques minutes.
la source