Cela fonctionne pour connecter l’utilisateur, mais passer la clé groups ne semble avoir aucun effet. J’ai parcouru le code de ManagedAuthenticator et je n’ai rien trouvé concernant les groupes non plus.
Est-ce qu’il manque quelque chose ou est-ce que ma compréhension est incorrecte ?
Vous ne ratez rien : le plugin JWT ne prend pas en charge le passage des groupes. Le rendre possible nécessiterait un certain travail de développement sur le plugin.
@david À quel point penses-tu que ce soit difficile à réaliser pour quelqu’un qui n’a jamais écrit de plugins ? Est-ce aussi simple que de récupérer par nom, depuis Discourse, les groupes issus du JWT, puis d’assigner le résultat de la requête (les objets groupe) à user.groups ? Je connais un peu le plugin (aussi simple soit-il) et je pourrais peut-être le faire.
Par ailleurs, devrais-je même m’en soucier ? Si je possède un JWT en main, puis-je m’authentifier via OpenID Connect ?
Cela dépend de la façon dont vous souhaitez que cela fonctionne… vous voudrez probablement pouvoir créer des groupes normaux dans Discourse également, sans que le JWT supprime aléatoirement des membres de ces groupes. Dans notre système SSO natif de Discourse, nous résolvons cela avec deux paramètres : « add groups » et « remove groups ».
Dans le plugin JWT, vous ajouteriez probablement cette logique dans la fonction after_authenticate de l’authentifieur. Assurez-vous d’appeler super et de renvoyer sa réponse, afin que tout le fonctionnement existant continue de fonctionner correctement. Un exemple de ce type de surcharge se trouve ici
Le plugin discourse-jwt fonctionne. Cependant, il semble qu’il soit conçu pour ne fonctionner qu’avec l’algorithme HS256, pour une raison quelconque. Il est assez simple de le faire fonctionner avec d’autres algorithmes.