Rocket.Chat SSO + Embed-Plugin

image

Zusammenfassung: Dieses Plugin integriert Rocket.Chat mit Discourse.

Sie benötigen eine separate gehostete Instanz von Rocket.Chat, beispielsweise bei Communiteq, Digital Ocean oder einem anderen Anbieter. Dieses Plugin integriert diese Instanz mit Ihrem Forum.

Die Integration besteht aus zwei Teilen:

  • Einbettung des Chats in die Benutzeroberfläche von Discourse
  • Single Sign-On zwischen Discourse und Rocket.Chat, wobei Discourse als Authentifizierungsanbieter fungiert, um Benutzer in Rocket.Chat zu authentifizieren, zu erstellen und zu aktualisieren.

:link: GitHub: GitHub - communiteq/discourse-rocketchat · GitHub
:arrow_right: Installation: Befolgen Sie den Installationsleitfaden für Plugins.
:pray:t3: Credits: @jrgong hatte die großartige Idee, Rocket.Chat mit Discourse zu integrieren, und entwickelte auch eine erste Version der Benutzeroberfläche.

Screenshots

Der Chat ist in der unteren rechten Ecke der Discourse-Oberfläche eingebettet. Er kann durch Klicken auf die Titelleiste ein- und ausgeklappt werden. Der Chat bleibt geöffnet, wenn Sie im Forum navigieren.

Auf Mobilgeräten ist der Chat in Vollbildanzeige und über das Rocket.Chat-Symbol in der oberen Leiste zugänglich:

Konfiguration

Die Integration muss auf beiden Systemen konfiguriert werden. Discourse muss wissen, wo der Chat zu finden ist, um ihn in seine Benutzeroberfläche einzubinden, und Rocket.Chat muss wissen, wo Discourse zu finden ist, um authentifizieren zu können.

Seite Discourse

Admin - Plugins - Discourse RocketChat - Einstellungen

discourse_rocketchat_enabled
Aktivieren oder deaktivieren Sie das Plugin.

discourse rocketchat title
Konfigurieren Sie hier den Titel des Chatfensters, z. B. Chat.

discourse rocketchat host
Konfigurieren Sie hier den Hostnamen Ihrer RocketChat-Instanz, z. B. chat.example.com.
Fügen Sie kein https:// oder Ähnliches voran.

discourse rocketchat default channel
Konfigurieren Sie hier den Standardkanal, z. B. General.

discourse rocketchat min trust level
Konfigurieren Sie das minimale Vertrauensniveau für Ihre Benutzer, damit sie Rocket.Chat nutzen können, z. B. 2: member.

discourse rocketchat click entire bar
Aktivieren Sie diese Option, wenn die gesamte Titelleiste anklickbar sein soll, um den Chat zu erweitern oder auszublenden. Deaktivieren Sie diese Option, wenn nur der Text „Öffnen" und „Schließen" anklickbar sein soll.

discourse rocketchat show menu for groups
Konfigurieren Sie die Gruppen, für die Rocket.Chat sein Menü anzeigen soll, z. B. staff.

Seite Rocket.Chat

Administration - Einstellungen - CAS

Die Integration verwendet das CAS 2.0-Protokoll für Authentifizierung und Autorisierung.

Ersetzen Sie forum.example.com durch den Namen Ihres Forums.

  • SSO Base URL: https://forum.example.com/rocketchat
  • SSO Login URL: https://forum.example.com/rocketchat/login
  • CAS Version: 2.0
  • CAS-Benutzernamen vertrauen: aktiviert
  • Benutzererstellung zulassen: aktiviert
  • Aktiviert: aktiviert

Administration - Einstellungen - CAS - Attributbehandlung

Um die E-Mail-Adresse und den vollständigen Namen synchronisieren zu können, müssen wir konfigurieren, wo diese Attribute zu finden sind.

  • Benutzerdaten immer synchronisieren: aktiviert
  • Attributzuordnung: {\"email\":\"%email%\", \"name\":\"%name%\"}

Administration - Einstellungen - Allgemein

Wir müssen in der Lage sein, Rocket.Chat in einem iFrame auszuführen.

  • Zugriff innerhalb eines Iframes einschränken: deaktiviert

Administration - Einstellungen - Konten

Um die beiden Plattformen zu integrieren, muss Discourse die Kontrolle über die Anmeldung und Registrierung sowie über den vollständigen Namen, den Namen und die E-Mail-Adresse des Kontos haben. Sie müssen auf der Seite von Rocket.Chat die folgenden Einstellungen deaktivieren:

  • Änderung des Benutzer-Avatars zulassen: deaktiviert
  • Namensänderung zulassen: deaktiviert
  • Benutzernameänderung zulassen: deaktiviert
  • E-Mail-Änderung zulassen: deaktiviert
  • Standard-Anmeldeformular anzeigen: deaktiviert

Administration - Einstellungen - Konten - Registrierung

  • Registrierungsformular: deaktiviert
  • Geheime URL des Registrierungsformulars: (ein zufälliger String)

Administration - Einstellungen - Konten - Avatar

Rocket.Chat kann die Avatare von Discourse verwenden.
Stellen Sie sicher, dass Sie forum.example.com durch den Namen Ihres Forums ersetzen.

  • Externe URL des Avatar-Anbieters: https://forum.example.com/rocketchat/avatar/{username}.png
20 „Gefällt mir“

Ich bin einer der Kunden, die das Plugin schon eine Weile nutzen, und es ist fantastisch!!!

Übrigens @RGJ: Vielleicht könntest du dem Betreff hinzufügen, dass es sich um eine SSO- und Embed-Lösung handelt, um RC in deine bestehende Discourse-Instanz zu integrieren.

Wer nach einer brauchbaren Alternative zu Babble Chat sucht, hat hier die heilige Gral gefunden!

9 „Gefällt mir“

Sehr cool!

Eine Anmerkung zur Avatar-URL: Mit dieser werden keine Bilder für Benutzer mit Standard-Avataren (Buchstaben auf farbigem Hintergrund) angezeigt, sondern nur benutzerdefinierte Bilder oder Gravatar-Bilder. Vielleicht kennt jemand eine andere URL, mit der alle Avatare angezeigt werden können? :slight_smile:

2 „Gefällt mir“

Das ist ein guter Punkt, @DiscourseMetrics, danke. Mir war eine solche URL nicht bekannt, daher habe ich eine in das Plugin integriert. Sie können nun jedes Avatar über https://forum.example.com/rocketchat/avatar/{username}.png abrufen, unabhängig davon, ob es sich um ein Gravatar, ein hochgeladenes Bild oder einen Buchstaben handelt.

5 „Gefällt mir“

Das sieht großartig aus! Leider verschwindet mein d-Header, wenn ich dies aktiviere. Hast du eine Idee, warum das passiert?

1 „Gefällt mir“

Hmm… du verwendest eine Unmenge an Theme-Komponenten, sodass es ohne direkten Zugriff schwierig ist, das Problem zu debuggen.

Ich habe festgestellt, dass ich eine nicht präfixierte Klasse (.collapsible) verwendet habe, die wahrscheinlich zu Konflikten führt. Daher habe ich diese jetzt mit einem Präfix versehen.

2 „Gefällt mir“

Danke, Richard. Leider hat das nicht funktioniert. Ich habe es auch auf einer meiner anderen Seiten versucht und alle Plugins sowie TCs deaktiviert, aber das Problem tritt immer noch auf, wie du hier sehen kannst: Exploring Exposure - Exploring Exposure Discussions

2 „Gefällt mir“

Mir ist gerade aufgefallen, dass ich dieses Plugin nur gegen den stable-Branch entwickelt und getestet habe. Das Plugin wirft einen Fehler und stürzt unter 2.8.x ab. Ich werde das untersuchen und beheben. Vielen Dank für deinen Bericht!

@davidkingham Ich habe das Problem behoben. Könntest du bitte neu bauen und erneut testen?

4 „Gefällt mir“

Vielen Dank für dieses Plugin, es ist unglaublich nützlich!

Nur zwei Punkte:

  • Derzeit teste ich nur den Teil der Chat-Einbettung der Integration. Erlaubt die SSO-Funktion des Plugins eine nahtlose Integration mit automatischer Anmeldung, oder muss der Benutzer trotzdem auf den SSO-Login-Button klicken, um sich bei Rocket.Chat anzumelden (ohne ein Passwort eingeben zu müssen)?
    Derzeit habe ich dieses Problem bei der SSO-Integration zwischen Rocket.Chat und NextCloud, und bisher konnte ich keine Möglichkeit finden, sich bei Rocket.Chat automatisch anzumelden, ohne auf den SSO-Button klicken zu müssen.

  • Wäre es möglich, die eingebettete Chat-Oberfläche so einzustellen, dass sie auf der Rocket.Chat-Startseite und nicht in einem Standardkanal geöffnet wird?
    Derzeit besteht die einzige Option darin, einen Standardkanal festzulegen, aber es wäre ebenfalls sehr nützlich, wenn die eingebettete Chat-Oberfläche auch auf der anpassbaren Rocket.Chat-Startseite geöffnet würde.
    (Ich habe dazu gerade ein Issue im GitHub-Repository hier eröffnet, ich hoffe, dass dies niemanden stört).

Nochmals vielen Dank für Ihren wertvollen Beitrag!

1 „Gefällt mir“

Diese Lösung wird in phpfox verwendet und heißt ChatPlus. Dort können Sie alle Nachrichten des alten Chats in Rocket Chat übertragen. Planen Sie, eine solche Funktion hinzuzufügen?

Auf welchen „alten Chat

[quote=“RGJ, Beitrag: 11, Thema: 199450”]
Auf welchen „alten Chat

Discourse verfügt nicht über einen integrierten Chat. Woher stammen diese Nachrichten also?
Außerdem besteht der Unterschied zwischen einem Chat und einem Forum darin, dass Chatnachrichten vergänglicher sind.

1 „Gefällt mir“

Ich meine private Nachrichten.

Ah, verstehe. In diesem Fall: Nein.
Ich bin mir nicht sicher, ob dies wirklich ein Problem ist, da das Aktivieren des Rocket.Chat-Plugins dies weiterhin ermöglicht, selbst wenn PMs deaktiviert sind:

2 „Gefällt mir“

[quote=“RGJ, Beitrag: 11, Thema: 199450”]
Stelle dieses Skript als „Benutzerdefiniertes Skript für abgemeldete Benutzer

Danke für die Antwort. Wäre es möglich, für den Chat Mattermost oder MongooseIM anstelle von Rocket.Chat zu verwenden? Mattermost ist in Go geschrieben, verbraucht weniger Ressourcen und ist besser skalierbar. Oder ist dies nur mit Rocket.Chat möglich?

Nein, dies ist ein Rocket.Chat-Plugin für Discourse…

Das Plugin verwendet das CAS 2.0-Protokoll, um SSO-Funktionalität bereitzustellen.

Ist es möglich, den Chat so umzugestalten, dass er zum Forum passt? Ist das mit CSS machbar? Danke.

Hilft Ihnen das weiter? https://developer.rocket.chat/guides/developer/ui-and-theming

1 „Gefällt mir“