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 „Gefällt mir“

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 „Gefällt mir“

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 „Gefällt mir“

Die Social login App unterstützt ab Version 4.10 Discourse.

3 „Gefällt mir“

Schön! Ich sehe, dass Discourse nicht als „eingebauter OAuth-Provider“ für die Social-Login-App in Nextcloud bereitgestellt wird. Es gibt verschiedene Möglichkeiten, dies mit Discourse einzurichten – wie haben Sie es gemacht? Würden Sie vielleicht ein Rezept zur Verfügung stellen?

Ich sehe auch, dass die App es Ihnen ermöglicht, Gruppen vom Authentifizierungsanbieter zu erben, was ziemlich praktisch ist. Ich würde das gerne mit meiner Discourse/Nextcloud-Einrichtung machen können.

Es gibt auch andere Nextcloud-Apps, die hier relevant zu sein scheinen, aber ich habe sie nicht alle getestet. Es gibt die OpenID Connect Login-App. Eine Discourse SSO-App existiert ebenfalls, scheint aber veraltet/ungetestet zu sein.

Wie in meinem Beitrag geschrieben, benötigen Sie Version 4.10. Dann gibt es in den Einstellungen für die soziale Anmeldung die Option „Benutzerdefinierte Discourse“.

Diese unterstützt nur OpenID Connect, was von Discourse nicht bereitgestellt wird.

Das ist für die andere Richtung, wenn Sie sich mit Ihrem Nextcloud-Konto bei Discourse anmelden möchten.

3 „Gefällt mir“

Danke, Patrick! Ich habe die App jetzt noch einmal installiert und sehe die Option „Benutzerdefinierter Discourse“. Sie ist noch nicht in der Dokumentation erklärt, weshalb ich dachte, es hätte sich nichts geändert. Auch auf der Seite https://apps.nextcloud.com/apps/sociallogin gibt es einen Link zu einem defekten Link im Nextcloud-Supportforum, daher fällt es mir schwer herauszufinden, wo ich mit den Entwicklern über diese App sprechen kann.

Ich habe es jetzt zum Laufen gebracht, aber das größte Problem, das ich habe, ist, dass ich nicht herausfinden kann, wie ich dies standardmäßig zur einzigen Anmeldemethode für alle bestehenden Benutzer aktivieren kann.

Das zweitgrößte Problem ist, dass die Benutzerdetails nicht korrekt von Discourse nach Nextcloud übertragen werden. Neue Benutzer, die in Nextcloud erstellt werden, erhalten einen automatisch generierten Benutzernamen in der Form [interner Name]-[Benutzer-ID], also in meinem Fall z. B. kb2-3797. Der Name wird übernommen, aber andere Profildetails müssen in Nextcloud erneut ausgefüllt werden. Der Avatar wird ebenfalls nicht übernommen.

Ich frage mich auch, wie der Benutzer seinen Benutzernamen und sein Passwort für den Desktop- oder mobilen Client einrichtet, wenn dies die einzige Anmeldemethode für die Nextcloud-Web-App ist. Ich schätze, sie müssen wissen, dass sie in ihren Kontoeinstellungen in der Nextcloud-Web-App Anmeldedaten für Nextcloud einrichten müssen.

Einige andere Dinge, die mir aufgefallen sind:

  • App-Einstellungen werden nicht über den Abschnitt Apps erreicht, sondern über die Seitenleiste der Administrationseinstellungen. Es hat mich einen Moment gedauert, sie zu finden. :slight_smile:
  • Es gibt drei Abschnitte in den Administrationseinstellungen für die App, und die oberen und unteren Abschnitte haben Speicher-Buttons, aber der mittlere (für benutzerdefinierte Anbieter) nicht. Es ist nicht klar, welchen man zum Speichern benutzerdefinierter Discourse-Einstellungen verwenden soll. Antwort: Beide funktionieren auf die gleiche Weise.
  • Es gibt viele App-Einstellungen. Diese scheinen für meine Einrichtung am besten zu funktionieren:
    • disable auto create new users = Ermöglicht die Erstellung neuer Benutzer in Nextcloud, wenn sie in Discourse existieren.
    • create users with disabled account = Deaktiviert neu erstellte Benutzer nicht.
    • allow users to connect social logins with their account = Ermöglicht bestehenden Benutzern, sich über Discourse anzumelden (:warning: kann nicht herausfinden, wie man standardmäßig zulässt, dass sich Benutzer über Discourse anmelden)
    • update user profile every login = Synchronisiert Discourse-Gruppen mit Nextcloud-Gruppen bei jedem Login. (:warning: synchronisiert Benutzernamen, Namen, Bio und andere Profildaten nicht korrekt)
    • do not prune not available user groups on login (:warning: Ich weiß nicht, was das tut, aber es ist standardmäßig aktiviert. Ich vermute, es verhindert, dass der Benutzer aus bestehenden Nextcloud-Gruppen entfernt wird, wenn er nicht aus Discourse zugeordnet ist?)
    • automatically create groups if they do not exist = deaktiviert, da einige hässliche Gruppennamen erstellt werden, die die gewünschten Gruppen replizieren (siehe unten).
    • restrict login for users without mapped groups = deaktiviert
    • restict login for users without assigned groups = deaktiviert
    • disable notify admins about new users = deaktiviert, da es mir hilft zu sehen, wann neue Nextcloud-Benutzer erstellt werden.
    • hide default login = Ermutigt Benutzer, sich über Discourse anzumelden, obwohl es immer noch möglich ist, sich direkt mit dem Nextcloud-Benutzernamen/-E-Mail und Passwort anzumelden.
  • Ich habe beim ersten Versuch sofort den Admin-Zugriff verloren, bevor ich Gruppenzuordnungen erstellt habe. Um ihn zurückzubekommen, musste ich zur Kommandozeile gehen und occ group:adduser admin USERNAME ausführen.
  • Die Gruppenzuordnung funktioniert super! Am wichtigsten war die Zuordnung von admins → Nextcloud admin, damit Admins in meinem Forum Admin-Rechte in Nextcloud haben. Ich konnte auch Zuordnungen für Gruppen hinzufügen, die für sichere Kategorien verwendet werden, um auch Zugriff auf sichere Ordner in Nextcloud zu erhalten, die mit diesen sicheren Kategorien verbunden sind.

Schritt für Schritt näher!

1 „Gefällt mir“

Ich würde GitHub vorschlagen.

Meiner Meinung nach ist das die beste Implementierung, da die ID hauptsächlich intern verwendet wird und für normale Benutzer nicht an vielen Stellen sichtbar ist.
Nextcloud hat keine einfache Möglichkeit, Benutzer umzubenennen, aber Discourse hat das. Das Umbenennen eines Benutzers in Discourse könnte zu seltsamem Verhalten bei Nextcloud führen, wenn die Namen nicht mehr übereinstimmen.

Die avatar_url von DiscourseConnect sollte an Nextcloud übergeben werden und dort gelesen werden. Wenn Sie auch die bio übergeben möchten, sollten ein paar Zeilen in dem für die Profilaktualisierungen zuständigen Branch ausreichen.

Sie sollten stattdessen Gerätepasswörter verwenden. Das Nextcloud-Passwort könnte sich vom Discourse-Passwort unterscheiden, was zu Verwirrung führen und das SSO umgehen würde.

Ich denke, das sind allgemeine Probleme mit der Nextcloud-Benutzeroberfläche und nicht app-spezifisch.

Setzen Sie die Option social_login_auto_redirect auf true, wie im Konfigurationsabschnitt beschrieben, wenn Sie die Nextcloud-Anmeldung vollständig ausblenden möchten.

2 „Gefällt mir“

Großartig! Danke, Patrick! Ich schätze die Anleitung sehr.

Ich habe ein Problem auf GitHub eröffnet bezüglich meines Hauptproblems, nämlich dass ich möchte, dass sich alle Benutzer über Discourse anmelden, und dies derzeit nicht tun kann, ohne den Benutzern Anweisungen zu geben, wie sie über die Benutzereinstellung social login connect zu Discourse wechseln können.

Ich habe social_login_auto_redirect jetzt wie von Ihnen vorgeschlagen gesetzt, und es wird gut funktionieren, sobald alle für die Nutzung von Discourse eingerichtet sind. :+1: Vorerst funktioniert es für mich persönlich gut, aber nicht für andere, die diese Seiten nutzen. Sie werden sich nicht anmelden dürfen. :sob:

Ich bin mir nicht ganz sicher, was Sie mit Gerätepasswörtern meinen – ich habe den von Ihnen bereitgestellten Link angesehen, aber die Screenshots der Benutzereinstellungen auf dieser Seite sehen nicht so aus wie in meiner Nextcloud-Instanz. Vielleicht verwenden wir eine andere Version? Ich bin auf 23.0.0 im stabilen Update-Kanal. :thinking: Oder gibt es vielleicht eine App, die ich installieren muss?

Das Synchronisieren von Benutzernamen, Avataren und Biografien ist weniger dringend, obwohl es schön wäre, wenn es richtig funktionieren würde. Ich verstehe nicht, warum diese Details nicht bei jeder Anmeldung für den Benutzer aktualisiert werden können sollten. Vielleicht gibt es Eigenheiten bei Nextcloud, die in diesem Fall nicht gut mit Discourse zusammenarbeiten. Discourse erlaubt beispielsweise nur einen Benutzer pro E-Mail-Adresse, während ich anscheinend einen zweiten Nextcloud-Benutzer mit derselben E-Mail-Adresse erstellen kann, es sei denn, ich verhindere dies mit der Admin-Einstellung Prevent creating an account if the email address exists in another account. Idealerweise würden diese Konten automatisch anhand der E-Mail-Adresse verknüpft.

1 „Gefällt mir“

Ich bin mir nicht sicher, ob ich Ihr aktuelles Problem richtig verstehe, aber ich gehe davon aus, dass Ihr Problem die bestehenden Benutzer sind, die kein „verknüpftes Social-Login-Konto“ haben. Wenn alle Benutzer verbunden sind, wäre alles in Ordnung?

Wie Sie bereits selbst geschrieben haben, ist die E-Mail in Nextcloud nicht eindeutig und kann daher nicht sicher für die Benutzerzuordnung verwendet werden.

Als ich zur sociallogin-App wechselte, habe ich die bestehenden Benutzer mit einer einfachen SQL-Abfrage verbunden. Ich habe die Discourse-Benutzerliste exportiert und eine Zuordnung von [interner Name]-[Benutzer-ID] (z. B. kb2-3797) zu den bestehenden Nextcloud-Benutzernamen in die Tabelle sociallogin_connect in der Nextcloud-Datenbank eingefügt. Welche Felder Sie für die Zuordnung verwenden (z. B. Benutzername oder E-Mail) hängt von Ihrer Einrichtung ab.

Der Screenshot scheint etwas veraltet zu sein, aber ich habe eine sehr ähnliche Tabelle (einschließlich des „Buttons zum Erstellen eines neuen gerätespezifischen Passworts“), wenn ich /settings/user/security auf meiner Nextcloud 23.0 Stable-Instanz öffne. Können Sie einen Screenshot Ihrer Seite posten?

2 „Gefällt mir“

Es wird nicht lange dauern, meine bestehenden Benutzer zu reparieren – ich habe nur wenige davon auf meiner Website. Aber in Bezug auf eine langfristige, replizierbare Lösung, die für alle funktioniert, die Discourse als Authentifizierungsanbieter für Nextcloud nutzen möchten, scheint es sinnvoll zu sein, nur einen Benutzer pro E-Mail-Adresse zuzulassen und sie automatisch anhand der E-Mail-Adresse zuzuordnen. Die Benutzer müssen nichts tun, damit dies geschieht.

Hier sieht meine Seite /settings/user/security so aus.

1 „Gefällt mir“

Ganz am Ende der Seite befindet sich die Option „Neues App-Passwort erstellen“. Dort können Sie neue Anmeldeinformationen z. B. für Desktop-Clients erstellen.

2 „Gefällt mir“

Okay, das ergibt Sinn, auch wenn die Sprache etwas verwirrend ist. Ich glaube, ich verstehe es jetzt. Neue Benutzer, die sich noch nie direkt bei Nextcloud angemeldet haben und die App installieren möchten, müssen die Schaltfläche „App-Passwort erstellen“ verwenden, um ein neues „App-Passwort“ dafür zu erstellen. Idealerweise wäre dies ein Passwort pro Gerät, muss aber nicht sein.

Ich werde weiterhin auf GitHub nachhaken, um zu sehen, ob ich helfen kann, die Dokumentation zu klären und einige der Integrationsprobleme zu lösen. Aber im Moment würde ich sagen, @paroga, du hast diese Supportanfrage aus dem Jahr 2017 endlich gelöst! :partying_face:

1 „Gefällt mir“

Ich denke, Sie können sich das Tutorial ansehen, das ich geschrieben habe.

Ich benutze diese Funktion, um mein NextCloud mit meinem Discourse zu verbinden.

1 „Gefällt mir“

Dieses Thema wurde 30 Tage nach der letzten Antwort automatisch geschlossen. Neue Antworten sind nicht mehr möglich.