Has anyone succeeded in using discourse as sso provider for nextcloud? Share recipe?

Hi all - I am interested in setting up a few small community sites with discourse plus nextcloud for document and media content sharing. It would be loverly and preferable to have SSO with discourse as SSO provider. If anyone has succeeded in doing this and can share a recipe here on how to do it I’d appreciate it. Thanks! :seedling:

The communities I am looking at creating are for my own geographically dispersed family, my neighborhood, and my son’s school.

I might also be interested in setting up a nextcloud for the organization I work for that already has an active community website. Though my organization’s community uses discourse, it uses wordpress as SSO auth now. Down the pike I’m also interested in flipping that around so we can benefit from features reliant on discourse as SSO auth.

Edit: this seems to be the page - I will be exploring this today and will let others know what I come up with if anything. :slight_smile: Any guidance along the way much appreciated.

https://docs.nextcloud.com/server/11/admin_manual/configuration_server/sso_configuration.html

1 « J'aime »

i’ve quite the same usecases, where i want to use discourse as the SSO provider for nextcloud.

are there any updates on this?

2 « J'aime »

Not that I am aware of. Could you ask at the nextcloud community?

it’s not a perfect implementation, but it does its job for me:

https://github.com/paroga/user_discourse

6 « J'aime »

L’application de connexion sociale prend en charge Discourse à partir de la version 4.10.

3 « J'aime »

Génial ! Je vois que Discourse n’est pas fourni comme « fournisseur OAuth intégré » pour l’application de connexion sociale dans Nextcloud. Il existe plusieurs façons de le configurer en utilisant Discourse - comment avez-vous fait ? Pourriez-vous fournir une recette ?

Je vois également que l’application permet d’hériter des groupes du fournisseur d’authentification, ce qui est plutôt intéressant. J’aimerais pouvoir faire cela avec ma configuration Discourse/Nextcloud.

Il existe également d’autres applications Nextcloud qui semblent pertinentes ici, mais je ne les ai pas toutes testées. Il y a l’application OpenID Connect Login. Une application Discourse SSO existe également, mais elle semble obsolète/non testée.

Comme écrit dans mon message, vous avez besoin de la version 4.10. Ensuite, il y a une option “Custom Discourse” dans les paramètres de connexion sociale.

Elle n’a que le support OpenID Connect, qui n’est pas fourni par Discourse.

C’est pour l’autre sens, si vous voulez vous connecter à Discourse avec votre compte Nextcloud.

3 « J'aime »

Merci, Patrick ! J’ai réinstallé l’application et je vois maintenant l’option “Custom Discourse”. Elle n’est pas encore expliquée dans la documentation, c’est pourquoi je pensais que rien n’avait changé. De plus, sur la page https://apps.nextcloud.com/apps/sociallogin, il y a un lien brisé vers le forum de support de Nextcloud, donc j’ai du mal à trouver où parler de cette application avec les développeurs.

Je l’ai maintenant fonctionnelle, mais le plus gros problème que j’ai est que je ne parviens pas à activer cette option comme seule méthode de connexion pour tous les utilisateurs existants par défaut.

Le deuxième plus gros problème est que les détails de l’utilisateur ne sont pas correctement transférés de Discourse à Nextcloud. Les nouveaux utilisateurs créés dans Nextcloud reçoivent un nom d’utilisateur généré automatiquement sous la forme [nom interne]-[ID utilisateur], donc dans le cas de mon site, par exemple kb2-3797. Le nom est transféré, mais d’autres détails du profil doivent être remplis à nouveau dans Nextcloud. L’avatar n’est pas non plus transféré.

Je me demande aussi comment l’utilisateur configurera son nom d’utilisateur et son mot de passe pour le client de bureau ou mobile, lorsque ce sera la seule méthode de connexion pour l’application web Nextcloud. Je suppose qu’ils devront savoir aller dans les préférences de leur compte dans l’application web Nextcloud pour configurer les identifiants de connexion Nextcloud.

Quelques autres points que j’ai remarqués :

  • les paramètres de l’application ne sont pas accessibles via la section apps mais via la barre latérale des paramètres d’administration. Il m’a fallu une minute pour les trouver. :slight_smile:
  • il y a trois sections dans les paramètres d’administration pour l’application, et les sections du haut et du bas ont des boutons de sauvegarde, mais celle du milieu (pour les fournisseurs personnalisés) n’en a pas. Il n’est pas clair laquelle utiliser pour enregistrer les paramètres personnalisés de Discourse. Réponse : elles fonctionnent toutes les deux de la même manière.
  • il y a de nombreux paramètres d’application. ceux-ci semblent fonctionner au mieux pour ma configuration :
    • disable auto create new users = permet la création de nouveaux utilisateurs dans Nextcloud s’ils existent dans Discourse
    • create users with disabled account = ne pas désactiver les utilisateurs nouvellement créés
    • allow users to connect social logins with their account = permet aux utilisateurs existants de choisir de se connecter via Discourse (:warning: impossible de savoir comment autoriser par défaut les utilisateurs à se connecter via Discourse)
    • update user profile every login = synchronise les groupes Discourse avec les groupes Nextcloud à chaque connexion. (:warning: ne synchronise pas correctement le nom d’utilisateur, le nom, la bio et les autres informations de profil)
    • do not prune not available user groups on login (:warning: je ne sais pas ce que cela fait mais c’est activé par défaut. Je suppose que cela empêche la suppression de l’utilisateur des groupes Nextcloud existants s’ils ne sont pas mappés depuis Discourse ?)
    • automatically create groups if they do not exist = désactivé car crée des noms de groupes peu esthétiques qui reproduisent des groupes que vous souhaitez (voir ci-dessous)
    • restrict login for users without mapped groups = désactivé
    • restict login for users without assigned groups = désactivé
    • disable notify admins about new users = désactivé car utile pour moi de voir quand de nouveaux utilisateurs Nextcloud sont créés
    • hide default login = encourage les utilisateurs à se connecter via Discourse bien qu’il soit toujours possible de se connecter directement avec le nom d’utilisateur/e-mail et le mot de passe Nextcloud.
  • J’ai perdu l’accès administrateur immédiatement la première fois que j’ai essayé, avant de créer des mappages de groupes. Pour le récupérer, j’ai dû aller en ligne de commande et exécuter occ group:adduser admin NOMUTILISATEUR
  • le mappage de groupes fonctionne très bien ! Le plus important a été d’ajouter le mappage de adminsadmin Nextcloud afin que les administrateurs de mon forum aient les privilèges d’administrateur dans Nextcloud. J’ai également pu ajouter des mappages pour les groupes utilisés pour les catégories sécurisées, afin de donner également accès aux dossiers sécurisés dans Nextcloud liés à ces catégories sécurisées.

On se rapproche !

1 « J'aime »

Je suggérerais GitHub.

IMHO, c’est la meilleure façon de l’implémenter, car l’ID est principalement utilisé en interne et n’est pas visible dans de nombreux endroits pour les utilisateurs normaux.
Nextcloud n’a pas de moyen facile de renommer les utilisateurs, mais Discourse en a un. Renommer un utilisateur dans Discourse pourrait entraîner un comportement étrange avec Nextcloud si les noms ne correspondent plus.

L’avatar_url de DiscourseConnect devrait être transmis à Nextcloud et lu là-bas. Si vous souhaitez également transmettre la bio, quelques lignes dans la branche responsable des mises à jour de profil devraient suffire.

Vous devriez plutôt utiliser des mots de passe d’appareil. Le mot de passe Nextcloud pourrait être différent du mot de passe Discourse, ce qui entraînerait de la confusion et sauterait le SSO.

Je pense qu’il s’agit de problèmes généraux avec l’interface utilisateur de Nextcloud et non spécifiques à l’application.

Définissez l’option social_login_auto_redirect sur true comme décrit dans la section de configuration si vous souhaitez masquer complètement la connexion Nextcloud.

2 « J'aime »

Génial ! Merci, Patrick ! J’apprécie vraiment vos conseils.

J’ai ouvert un problème sur GitHub concernant mon problème principal, qui est que je souhaite que tous les utilisateurs se connectent via Discourse et que je ne peux actuellement pas le faire sans donner aux utilisateurs des instructions sur la façon de passer à Discourse via la préférence utilisateur Connexion sociale.

J’ai maintenant défini social_login_auto_redirect comme vous le suggérez, et cela fonctionnera bien une fois que tout le monde sera configuré pour utiliser Discourse. :+1: Pour l’instant, cela fonctionne bien pour moi personnellement, mais pas pour les autres utilisateurs de ces sites. Ils ne seront pas autorisés à se connecter. :sob:

Je ne suis pas tout à fait sûr de ce que vous entendez par mots de passe d’appareil - j’ai regardé le lien que vous avez fourni, mais les captures d’écran des préférences utilisateur sur cette page ne ressemblent pas à mon instance Nextcloud. Sommes-nous peut-être sur une version différente ? Je suis sur la version 23.0.0, sur le canal de mise à jour stable. :thinking: Ou peut-être y a-t-il une application que je dois installer ?

La synchronisation du nom d’utilisateur, de l’avatar et de la biographie est moins urgente, bien que ce serait bien de la voir fonctionner correctement. Je ne vois pas pourquoi il ne serait pas possible de mettre à jour ces détails pour l’utilisateur à chaque connexion. Il y a peut-être des idiosyncrasies avec Nextcloud qui ne s’accordent pas bien avec Discourse dans ce cas. Par exemple, Discourse n’autorise qu’un seul utilisateur par adresse e-mail, alors qu’il semble que je puisse créer un deuxième utilisateur Nextcloud avec la même adresse e-mail, à moins que je ne l’empêche en utilisant le paramètre d’administration Empêcher la création d'un compte si l'adresse e-mail existe dans un autre compte. Idéalement, il suffirait de connecter automatiquement ces comptes en fonction de l’adresse e-mail.

1 « J'aime »

Je ne suis pas sûr de bien comprendre votre problème actuel, mais je suppose que votre problème concerne les utilisateurs existants qui n’ont pas de « compte de connexion sociale connecté ». Tout irait bien si tous les utilisateurs étaient connectés ?

Comme vous l’avez vous-même écrit, l’e-mail n’est pas unique dans Nextcloud et ne peut donc pas être utilisé en toute sécurité pour la mise en correspondance des utilisateurs.

Lorsque je suis passé à l’application sociallogin, j’ai connecté les utilisateurs existants avec une simple requête SQL. J’ai exporté la liste des utilisateurs Discourse et inséré une mise en correspondance entre le [nom interne]-[id utilisateur] (par exemple, kb2-3797) et les noms d’utilisateur Nextcloud existants dans la table sociallogin_connect de la base de données Nextcloud. Les champs que vous utilisez pour la mise en correspondance (par exemple, nom d’utilisateur ou e-mail) dépendent de votre configuration.

La capture d’écran semble un peu obsolète, mais j’ai une table très similaire (y compris le « bouton pour créer un nouveau mot de passe spécifique à l’appareil ») lorsque j’ouvre /settings/user/security sur mon instance Nextcloud 23.0 stable. Pouvez-vous poster une capture d’écran de votre page ?

2 « J'aime »

Cela ne me prendra pas longtemps pour corriger mes utilisateurs existants - je n’en ai que quelques-uns sur mon site. Mais en termes de solution à long terme, reproductible et qui fonctionnera pour tous ceux qui cherchent à utiliser discourse comme fournisseur d’authentification pour nextcloud, il semble logique de n’autoriser qu’un seul utilisateur par adresse e-mail et de les faire correspondre automatiquement en fonction de l’adresse e-mail. Les utilisateurs ne devraient avoir rien à faire pour que cela se produise.

Voici à quoi ressemble ma page /settings/user/security.

1 « J'aime »

Il y a un lien « Créer un nouveau mot de passe d’application » tout à la fin de la page. Vous pouvez y créer de nouvelles informations d’identification pour, par exemple, les clients de bureau.

2 « J'aime »

Ok, cela a du sens, bien que la langue soit un peu déroutante. Je pense que je comprends maintenant. Pour les nouveaux utilisateurs qui ne se sont jamais connectés directement à Nextcloud et qui souhaitent installer l’application, ils doivent utiliser le bouton Créer un nouveau mot de passe d’application pour en créer un nouveau “mot de passe d’application” à utiliser. Idéalement, il s’agirait d’un mot de passe par appareil, mais ce n’est pas obligatoire.

Je continuerai à suivre sur GitHub pour voir si je peux aider à clarifier la documentation et à résoudre certains problèmes d’intégration. Mais pour l’instant, je dirais que @paroga, vous avez enfin résolu cette demande de support datant de 2017 ! :partying_face:

1 « J'aime »

Je pense que vous pouvez jeter un œil au tutoriel que j’ai écrit.

J’utilise cette fonction pour connecter mon NextCloud à mon Discourse.

1 « J'aime »

Ce sujet a été automatiquement fermé 30 jours après la dernière réponse. De nouvelles réponses ne sont plus autorisées.