Fournisseur OAuth "faux ? OAuth "faux"faux"faux

Bonjour :wave: Je me demande si ce que j’essaie de faire serait possible.

Je voudrais associer des comptes Minecraft à des comptes Discourse, un peu comme on peut ajouter Discord, Google, etc., mais Minecraft n’a pas de système OAuth actuellement (peut-être une fois que tout le monde sera migré vers un compte Microsoft, mais ce serait un peu long à attendre). Donc, le système que je propose serait que l’utilisateur entre un code généré aléatoirement qu’il obtiendrait en jeu. Y aurait-il un moyen de l’ajouter à leur compte comme tout autre compte connecté ? Je structurerais probablement cela de manière similaire à https://mc-oauth.net/, mais au lieu de se connecter, ils utiliseraient une commande dans le chat.

Si c’était possible, auriez-vous des pistes sur la façon dont je pourrais y parvenir ? J’aurais à peu près juste besoin d’une fenêtre modale demandant le code → valider le code → obtenir l’UUID et le stocker comme identifiant de compte externe.

EDIT : En fait, il semble qu’avec la transition vers les comptes Microsoft, je pourrais être en mesure de modifier le plugin de compte Microsoft existant pour stocker les UUID Minecraft. Je devrai voir.

Vous pourriez peut-être utiliser des champs utilisateur personnalisés pour cela ? Creating and configuring custom user fields

Un champ utilisateur pourrait être défini comme obligatoire à l’inscription, ce qui accepterait le code généré aléatoirement. Les champs utilisateur peuvent également être modifiables dans les préférences de quelqu’un après l’inscription, si les comptes existants ont besoin d’ajouter le code.

2 « J'aime »

Oooooh, je n’y avais pas pensé. Merci pour l’idée - la raison principale pour laquelle je cherchais une approche OAuth est que je peux récupérer l’utilisateur par l’ID externe. Je vais voir si je peux potentiellement récupérer un utilisateur par un champ utilisateur.

EDIT : Ok, j’ai peut-être une façon de faire ça en utilisant les champs personnalisés. Je vais probablement devoir utiliser une base de données externe et créer ma propre méthode pour demander un utilisateur Discourse à partir de son UUID Minecraft. Je ne connais pas assez les limitations de Discourse pour savoir s’il y aurait une meilleure façon.

EDIT 2 : Hmm, je ne vois pas de moyen de modifier les champs utilisateur personnalisés via l’API. Idéalement, je voudrais que ce soit uniquement défini par l’API, afin de garantir qu’ils possèdent le compte. Je devrai peut-être créer une base de données externe et faire la liaison de compte via autre chose.

1 « J'aime »

On dirait que ce que vous voulez faire, c’est implémenter votre propre fournisseur OAuth ?

Un peu comme le diagramme ici :

Il semble que votre mécanisme personnalisé remplacerait le « Répertoire OAuth2 ».

(Ce serait peut-être plus simple en utilisant DiscourseConnect)

Bien sûr, tout cela dépend de la manière dont vous implémentez déjà l’authentification pour le site…

D’un autre côté, cela pourrait compliquer les choses inutilement — nous prenons en charge des champs personnalisés réservés au personnel qui pourraient convenir ici.

2 « J'aime »

Oui, je suppose que ma seule question principale est de savoir si, dans le cas d’un accès réservé au personnel, il y aurait un moyen de définir ces champs via une route d’API ? Je n’ai pas trouvé de moyen de le faire automatiquement.

Je ne vois aucune entrée dans docs.discourse.org pour celle-ci. Toutes les modifications effectuées par le navigateur Web sont effectuées à l’aide de la même API, donc mon conseil serait de faire de l’ingénierie inverse de ce qui est nécessaire.

1 « J'aime »

Oh, c’est vraiment utile - merci de partager ! J’ai donc réfléchi et fait plus de recherches sur la façon dont je pourrais faire cela. Je pense utiliser le paramètre state avec OAuth pour que les gens se connectent à leur compte Discourse, puis utiliser cet état pour associer l’UUID dans Minecraft. L’état serait juste une valeur générée aléatoirement qui existerait dans une base de données avec l’UUID Minecraft. Je pense que cette approche devrait fonctionner. Merci à tous pour vos idées et vos ressources !

1 « J'aime »

Étant donné que je n’avais pas besoin d’accéder à l’UUID de Minecraft depuis Discourse lui-même, j’ai fini par créer un système externe qui s’intègre au SSO de Discourse. J’apprécie l’aide, et si vous souhaitez voir ce que j’ai trouvé, je l’ai partagé ici. Un jour, je pourrais y revenir une fois que les comptes Microsoft seront obligatoires pour tous les utilisateurs de Minecraft, car il y aurait très certainement un moyen d’utiliser leurs API pour réaliser la même fonctionnalité.

1 « J'aime »