Non résolu [Authentification] Envoyer un tocket directement à la connection au serveur
-
Bonjour,
J’aimerais faire un système d’authentification custom pour mon serveur.
J’utilise actuellement mineweb pour mon site et aimerais faire en sorte que l’utilisateur puisse s’authentifier avec son compte sur mon site sur mon serveur sans faire de /login.
Ce que je sais faire:
J’ai mon launcher qui enregistre un token d’accès unique qui permet de se connecter au serveur.
Je sais faire le code qui permet de dire si oui ou non le token est valide avec une requette à mon site.Ce que je veux faire:
J’aimerais faire un mod, qui envois ce token au serveur avec un packet, ensuite le serveur fait la vérification avec le site puis accèpte ou non la connectionProblème:
J’aimerais que le packet soit envoyer instantanément quand le joueur clique sur le bouton pour rejoindre le serveur et que la vérification qui décide si oui ou non l’utilisateur à le droit de jouer sur le serveur se face avant même qu’il soit connecter au serveur.
Le problème est du coup d’envoyer un packet au serveur avant de pouvoir bouger dessus.Recherches faites:
J’ai essayer de regarder au niveau de l’authentification mojang normal et potentiellement essayer de créé un serveur d’authentification custom, mais c’est asser complexe et il n’y a pas de beaucoup de resources à ce propos donc j’essaye ma méthode (mais je suis toujours ouvert a des propositions/ressources à ce sujet).
J’éspère qu’on pourra m’aider sur ce sujet
-
Bonjour,
Attention par contre, si ton login via le site va remplacer le login de Mojang, tu es en train de fabriqué une version modifiée du jeu que des joueurs peuvent obtenir sans avoir le jeu original. Et on appel cela une contrefaçon et c’est fortement sanctionné par la loi.
Je vois deux approches possibles :
- en utilisant l’événement de connexion du joueur, envoyer un paquet depuis le serveur pour l’authentification, auquel le client répond avec son token. Si le token renvoyé est valide tu considère le joueur comme ok. Tant qu’il n’est pas ok, en utilisant d’autres événements, tu bloques les actions : (par exemple cancel le tick event : https://github.com/MinecraftForge/MinecraftForge/blob/1.12.x/src/main/java/net/minecraftforge/event/entity/living/LivingEvent.java#L67 )
- en modifiant le paquet de connexion via ASM. Plus complexe, nécessite l’utilisation d’un coremod. La lib Sponge mixins peut t’aider a écrire un patch plus facilement qu’en manipulant directement le bytecode.
-
@robin4002 Bonjour, merci de ta réponse.
Je pensais justement à la méthode du packet, mais elle n’est pas très “estétique”. Du coup la deuxième à l’air mieux
Après elle à l’air aussi un peut complexe :anguished_face:
Je pense que je vais plus partir sur l’option “refaire tout les serveurs mojang à la main” x)
-