Utilisateurs OIDC ne s'associant pas aux utilisateurs Discourse existants

Salut ! J’essaie de configurer Discourse avec le plugin Discourse OpenID Connect et Keycloak.

J’ai réussi à le faire fonctionner, et j’ai pu non seulement me connecter à mon instance Discourse en utilisant mes identifiants Keycloak, mais aussi associer un compte Discourse déjà existant à celui de l’OIDC. Malheureusement, j’ai fait une erreur lors de la configuration du conteneur Keycloak et j’ai fini par perdre sa configuration et sa base de données.

J’ai depuis réinstallé Keycloak (correctement cette fois !) et reconfiguré Discourse pour utiliser le nouvel ID client, mais bien que l’intégration semble fonctionner (l’activation des logs dans /logs montre que l’authentification a bien fonctionné), je n’arrive plus à associer les comptes Discourse aux comptes OIDC.

Lorsque j’essaie de me connecter à Discourse, j’utilise l’OIDC, je suis accueilli par la nouvelle interface utilisateur du compte, puis je clique sur le lien pour associer un compte existant ; je me connecte, je suis redirigé vers Discourse, et si je me déconnecte et me reconnecte, je vois la même nouvelle interface utilisateur du compte.

J’ai utilisé le plugin Data Explorer pour examiner les associations, et mon utilisateur apparaît comme NULL ; l’ID du fournisseur correspond cependant à l’ID utilisateur dans Keycloak.

J’ai activé l’option « OpenID Connect allow association change ».

J’imagine que Discourse s’accroche encore à ce qui était là de ma précédente installation Keycloak, et que le simple changement du nouvel ID client ne suffit pas.

Y a-t-il autre chose que je devrais examiner et que j’aurais pu négliger ?

Cordialement

Utilisez-vous la même adresse e-mail entre les comptes ? Pouvez-vous reproduire ce problème avec un nouveau compte qui n’était pas associé à Keycloak auparavant ?

Merci pour votre réponse rapide !

Je n’utilisais pas la même adresse e-mail entre les comptes, mais je l’ai changée sur Keycloak pour qu’elle corresponde à celle utilisée dans Discourse, et c’est toujours la même chose. La réponse dans Data Explorer est la même (“NULL” user).

J’ai essayé de créer un nouvel utilisateur vierge, et j’obtiens une erreur “Nom d’utilisateur, e-mail ou mot de passe invalide”, même si le nom d’utilisateur est parfaitement correct et disponible, l’e-mail est valide et le mot de passe a été généré par mon gestionnaire de mots de passe. C’est très probablement sans rapport, mais c’est autre chose que je dois comprendre pourquoi cela se produit.

Salut,

Je rencontre le même problème ici. J’utilise une Nextcloud comme fournisseur OIDC, mais cela n’a probablement pas d’importance pour ce problème.

Je peux me connecter avec l’identifiant Nextcloud. Ensuite, comme décrit ci-dessus, on me propose de créer un nouveau compte ou de me connecter avec un compte existant. Cependant, aucune liaison n’est établie avec le compte existant via l’adresse e-mail.

Si je choisis « S’inscrire », je suis immédiatement redirigé vers la page d’accueil en étant déconnecté, et je dois me reconnecter. Aucun message d’erreur n’est affiché.

C’est vraiment étrange.

Tout fonctionne correctement lorsque je me connecte avec un compte OIDC pour lequel il n’existe pas de compte Discourse correspondant. Dans ce cas, un nouveau compte est créé automatiquement et le compte lié s’affiche également dans les paramètres de l’utilisateur.

Peut-être que quelqu’un d’autre a une idée de ce que je fais mal, ou peut-être s’agit-il en réalité d’un bug.

Cordialement,

Mike

Bonjour à tous,

J’ai pu déterminer pourquoi l’association ne fonctionnait pas. Si quelqu’un doit résoudre ce problème, voici ma solution.

L’adresse e-mail transmise n’est pas marquée comme « vérifiée » par défaut. Pour y remédier, j’ai défini la valeur de « Vérification de l’adresse e-mail dans le token » sur « Toujours vérifié » dans la section Admin > Fournisseurs OpenID Connect > Paramètres.