DEV Community

Cover image for Sichere Moderation von Chats und Benutzern mit BizOps Workspace

Sichere Moderation von Chats und Benutzern mit BizOps Workspace

Dieser How-to-Artikel ist Teil einer Reihe von Artikeln, die sich mit den Datenverwaltungsfunktionen von PubNub befassen, die unter dem Namen BizOps Workspace bekannt sind:

BizOps Workspace ist eine Reihe von Tools, die Sie bei der Verwaltung Ihrer Anwendung unterstützen. Dieser Artikel erweitert den vorherigen Artikel "Überwachen und Moderieren von Konversationen mit BizOps Workspace", um eine sichere End-to-End-Chat-Anwendung mit manuellen Moderationsfunktionen zu zeigen, d. h. die Möglichkeit, Konversationen in Echtzeit zu überwachen und Benutzer stummzuschalten oder zu sperren.

Obwohl dieser Artikel für sich alleine gelesen werden kann, empfehle ich dringend, den vorherigen Artikel "How to Monitor and Moderate Conversations with BizOps Workspace" zu lesen, um den Hintergrund der hier besprochenen Konzepte besser zu verstehen.

Was ist der Channel Monitor?

Mit dem Channel Monitor können Chat-Moderatoren eine Live-Vorschau von Unterhaltungen sehen, die in Echtzeit über mehrere Kanäle laufen. Wenn der Moderator etwas Beunruhigendes entdeckt, wie z. B. einen sich daneben benehmenden Benutzer oder beleidigende Nachrichten, kann er sofort eingreifen, um das Problem zu beseitigen.

Der Moderator hat einen großen Spielraum bei der Wahl seiner Maßnahmen:

  • Einen Benutzer beobachten, ohne seine Zugriffsrechte einzuschränken
  • Bearbeiten oder Löschen der beleidigenden Nachricht
  • die Fähigkeit des Benutzers, Nachrichten zu veröffentlichen, einschränken(stummschalten)
  • die Fähigkeit des Benutzers, Nachrichten zu lesen oder zu veröffentlichen, einschränken(Verbot)

Alle Funktionen der Funktion "Überwachen" sind manuell: manuelle Überprüfung von Nachrichten, manuelles Stummschalten von Benutzern usw. Dieser Artikel befasst sich nicht mit der automatischen Moderation.

Um den Channel Monitor nutzen zu können, müssen Sie mehrere Funktionen in Ihrem PubNub Keyset aktiviert haben, insbesondere App-Kontext und Nachrichtenpersistenz. Weitere Details finden Sie im Abschnitt "Anforderungen an das Keyset für den Channel Monitor" im vorherigen Artikel.

Was ist der PubNub Access Manager?

Entwickler müssen verhindern, dass Benutzer versuchen, ihr Moderationssystem zu umgehen; dies wird durch den PubNub Access Manager erreicht.

Mit dem Access Manager können Sie eine Reihe von Regeln definieren, die die Berechtigungen des oder der angegebenen Benutzer beschreiben und welche Aktionen sie auf bestimmten Ressourcen durchführen können. Zum Beispiel:

  • Benutzer mit der ID 123 hat die Berechtigung zum Lesen und Schreiben auf Channel 456
  • Alle Benutzer, deren ID mit dem regulären Ausdruck user-* übereinstimmt, können von jedem Channel lesen, dessen ID mit dem regulären Ausdruck global-* übereinstimmt
  • Benutzer mit der ID 123 hat die Berechtigung, die Channel-Metadaten (d. h. den App-Kontext) zu aktualisieren.

Eine vollständige Liste der Berechtigungen finden Sie in der Dokumentation unter https://www.pubnub.com/docs/general/security/access-control#permissions.

Der PubNub Access Manager ist Token-basiert, und der einfachste Weg, ihn zu beschreiben, ist, den in der Dokumentation dargestellten Autorisierungsfluss durchzugehen und einige zusätzliche Informationen darüber zu geben, wie dieser Fluss mit der Moderation zusammenhängt:

Access Manager workflow

  1. Anmeldeversuch. Ihr Client authentifiziert sich gegenüber Ihrem Server, um Ihre Benutzer bei Ihrer Anwendung anzumelden. Dies geschieht wahrscheinlich über einen Identitätsanbieter; nach diesem Schritt ist Ihr Server sicher, dass er mit einem registrierten App-Benutzer spricht und wer dieser ist. Der Client fordert ein PubNub Access Manager Authentifizierungs-Token als Teil seiner Initialisierung an.
  2. Antrag auf Erlaubniserteilung. Der Server bearbeitet die Anfrage des Clients nach einem Token, indem er die SDK 'grantToken()' API aufruft. Zu dieser API sind einige Punkte zu beachten: Sie kann nur mit dem geheimen PubNub-Schlüssel aufgerufen werden und kann daher nur von einem Server aus aufgerufen werden; sie ist für alle unsere serverseitigen SDKs verfügbar; und diese API akzeptiert JSON-Objekte, um die Ressourcen und Berechtigungen zu definieren, die den Zugriff des/der Benutzer(s) bestimmen.
  3. Token zurückgegeben. PubNub gewährt dem/den angeforderten Benutzer(n) die angeforderten Berechtigungen und gibt ein Authentifizierungs-Token an den Server zurück.
  4. Token übergeben. Ihr Server gibt das Authentifizierungs-Token an den ursprünglich aufrufenden Client zurück.
  5. Token gesetzt. Der Client kann dieses Authentifizierungs-Token während seiner Initialisierung oder zu einem beliebigen Zeitpunkt während des Lebenszyklus der Anwendung mit der Methode setToken() festlegen. Die Möglichkeit, das Token jederzeit zu aktualisieren, ist wichtig, da Token ablaufen, ein Client aber auch ein neues Token anfordern muss, wenn der Channel Monitor seine Berechtigungen aktualisiert (d. h. wenn er stummgeschaltet oder gesperrt wird).
  6. Autorisierte API-Anfrage. Alle nachfolgenden Aufrufe an PubNub werden nun als autorisiert betrachtet. PubNub erlaubt oder verweigert jede API-Anfrage basierend auf den in Schritt 2 erteilten Berechtigungen und der Token-Gültigkeit des Clients.

Wie sieht eine sichere Moderationslösung aus?

Gegen Ende des letzten Artikels habe ich eine Demo gezeigt, wie das Stummschalten oder Sperren von der Client-Seite aus aussehen würde. Das Chat-SDK enthält Moderationsereignisse, die einem Client mitteilen, ob er stummgeschaltet oder gesperrt wurde oder nicht; abgesehen von der Aktualisierung der Benutzeroberfläche hindert dies den Client jedoch nicht daran, weiterhin Nachrichten zu senden, obwohl er stummgeschaltet/gesperrt wurde. Um den Client sicher stumm zu schalten oder zu sperren, müssen Sie ihm die bestehenden Access Manager-Berechtigungen entziehen und ihm neue erteilen, die seinen neuen Stumm- oder Sperrstatus widerspiegeln.

Stellen Sie sich das folgende Szenario vor, in dem ein Benutzer für den Channel "Musicals" stummgeschaltet ist:

Secure chat sequence diagram

  1. Ein Benutzer kann auf zwei Kanäle zugreifen, "Filme" und "Musicals", aber der Administrator möchte ihn nur für den Kanal "Musicals" stummschalten.
  2. Der Moderator schaltet den Benutzer mit Hilfe des Channel-Monitors stumm. Im Verborgenen wird dabei die API 'setRestrictions()' aufgerufen.
  3. Die Serveranwendung erhält die Stummschaltungsmitteilung über ein Moderationsereignis und entzieht dem Benutzer das bestehende Zugriffstoken.
  4. Die Client-Anwendung erhält über ein Moderationsereignis den Hinweis, dass der Kanal "Musicals" stummgeschaltet wurde.
  5. Die Anwendung aktualisiert ihre Benutzeroberfläche, um das Senden weiterer Nachrichten zu verhindern. Der Benutzer könnte diese UI-Änderung umgehen, indem er das JavaScript der Seite ändert, aber jeder Versuch, Nachrichten zu senden, schlägt fehl, da sein Authentifizierungstoken widerrufen wurde.
  6. Die Anwendung fordert ein neues Authentifizierungs-Token vom Server an, wie im obigen Abschnitt über den Zugriffsmanager beschrieben. Das neu gewährte Token spiegelt die neuen Berechtigungen des Benutzers wider, einschließlich des "Lese"-Zugriffs auf den Kanal "Musicals".

Im vorangegangenen Artikel wurden die "Komponenten einer Moderationslösung" beschrieben und die APIs, die sowohl dem Client als auch dem Server zur Verfügung stehen, in der folgenden Grafik aufgelistet. Die APIs, die in den obigen Schritten besprochen wurden, sind auch in dieser Grafik dargestellt.

Table showing components of a chat moderation solution

Die Chat-SDK-Beispielanwendung

Dasselbe Team, das für die Entwicklung des Channel Monitor und des Chat SDK verantwortlich ist, hat auch eine in React Native geschriebene Beispielanwendung erstellt, die das Chat SDK verwendet.

Das Beispiel zeigt die Möglichkeiten des SDKs und die besten Praktiken für die Entwicklung einer realistischen und voll funktionsfähigen Chat-App mit PubNub. Es ist Open Source und Teil desselben GitHub-Repositorys, das auch das Chat-SDK unter /samples/react-native-group-chat enthält.

Sample app running on iOS and Android

Diese Anwendung wurde kürzlich aktualisiert, um Token von einem Access Manager Server anzufordern und ein neues Token anzufordern, wenn sich die Berechtigungen des Benutzers ändern, d.h. wenn er von Kanälen ausgeschlossen oder stummgeschaltet wird. Diese Verbesserung wurde seit dem Verfassen des letzten Artikels vorgenommen, also stellen Sie sicher, dass Sie den neuesten Quellcode von GitHub erhalten. Zum Zeitpunkt der Erstellung dieses Artikels lautet die neueste Git-Commit-ID ae9dfa0

Sicheres Stummschalten und Verbannen von Benutzern: Demo mit der Beispielanwendung

In diesem Abschnitt wird beschrieben, wie Sie unsere End-to-End-Demo zum Laufen bringen und die sichere Moderation sowohl aus der Client- als auch aus der Serverperspektive zeigen.

PubNub Keyset erstellen

Ich empfehle, ein neues PubNub Keyset zu erstellen, um diese Demo wie folgt zu starten:

  1. Loggen Sie sich in das Admin Portal ein und erstellen Sie entweder eine neue Anwendung oder ein neues Keyset innerhalb einer bestehenden Anwendung. Bei Bedarf finden Sie eine Schritt-für-Schritt-Anleitung in unserem How to Create Admin Portal Keys.
  2. Aktivieren Sie auf der Seite Keysets die folgenden Konfigurationsoptionen. Sofern nicht anders angegeben, können Sie die Standardeinstellungen übernehmen:
  • App-Kontext. Dieser speichert Metadaten über Ihre Channels und Benutzer und wird im vorherigen Artikel über"Benutzer- und Channel-Verwaltung" näher beschrieben. Aktivieren Sie auch Benutzer-Metadatenereignisse, Channel-Metadatenereignisse und Mitgliedschaftsereignisse
  • Nachrichten-Persistenz. Dies speichert Ihren Nachrichtenverlauf mit PubNub, so dass der Administrator Konversationen überprüfen und bearbeiten kann.
  • Zugriffsmanager. Verhindert den unbefugten Zugriff auf Daten und ist erforderlich, um eine sichere Moderationslösung zu erstellen.
  • Anwesenheit. Wird verwendet, um zu verfolgen, ob ein Benutzer online oder offline ist.

Speichern Sie Ihre Änderungen.

Sie benötigen den Publish Key, Subscribe Key und Secret Key in den folgenden Schritten.

Erstellen Sie die Beispielanwendung

Wie bereits beschrieben, handelt es sich bei der Chat SDK-Beispielanwendung um eine plattformübergreifende Client-Anwendung, die in React Native unter Verwendung des Expo-Frameworks geschrieben wurde.

Klonen und erstellen Sie die Beispielanwendung, indem Sie den Anweisungen in der Readme-Datei der Anwendung folgen. Stellen Sie insbesondere sicher, dass Sie die Voraussetzungen installiert haben, einschließlich Garn und Node.js. In der ReadMe wird die Verwendung von XCode und iOS beschrieben, aber Sie können die Anwendung auch auf einem Android-Emulator ausführen. Zum Zeitpunkt der Erstellung dieses Artikels lautet die neueste Git-Commit-ID ae9dfa0

Wenn Sie die Pub/Sub-Schlüssel bereitstellen, verwenden Sie die Schlüssel, die Sie im vorherigen Schritt erzeugt haben. Wenn Sie die Schlüssel nicht in die .env-Datei aufnehmen, wird die Anwendung standardmäßig einige Demo-Schlüssel verwenden; Sie können diese Logik unter https://github.com/pubnub/js-chat/blob/ae9dfa0/samples/react-native-group-chat/App.tsx#L60 deaktivieren, um Verwirrung zu vermeiden.

Führen Sie die Anwendung aus. In der ReadMe werden Sie angewiesen, yarn ios auszuführen, aber Sie können auch yarn android oder yarn run start ausführen, wobei letzteres Ihnen ein interaktives Menü bietet.

Wenn Sie sich anmelden, sollten Sie die folgende Warnung in Ihrer Konsole sehen:

Failed log message

Das liegt daran, dass der Client sich nicht mit dem Access Manager Server verbinden konnte, also bauen wir ihn.

Erstellen Sie den Access Manager-Beispielserver

Der Sample Access Manager Server ist unter https://github.com/pubnub/js-chat/tree/master/samples/access-manager-api zu finden . Dies ist die gleiche Monorepo wie die zuvor besprochene Client-Anwendung.

Öffnen Sie die Datei src/chatsdk.service.ts in einem Editor Ihrer Wahl und füllen Sie die Felder publishKey, subscribeKey und secretKey aus. Der publishKey und der subscribeKey müssen mit den Schlüsseln übereinstimmen, die Sie zum Erstellen der Client-Anwendung verwendet haben, und der geheime Schlüssel ist auf der Keyset-Seite für die Anwendung im Admin-Portal verfügbar

Führen Sie im Verzeichnis REPO/samples/access-manager-api den Befehl yarn run start aus, um den Access Manager-Server zu starten, und Sie sollten etwas wie das folgende Bild sehen:

Sample Access Manager Server output

Um zu sehen, was der Access-Manager-Server tut, schauen Sie sich app.service.ts an. Sie sehen die für den anfragenden Benutzer generierten Berechtigungsstrukturen und den Aufruf von chat.sdk.grantToken(), um diese Berechtigungen anzuwenden und den generierten authKey an den aufrufenden Client zurückzugeben.

Dies sind die Berechtigungen, die die Demoanwendung benötigt, aber Ihre Anwendung wird wahrscheinlich andere Berechtigungen benötigen. Sie können diesen mitgelieferten Regelsatz als Startvorlage verwenden, aber wenn Sie den Access Manager Server für Ihre Anwendung erstellen, konsultieren Sie https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions, um genau zu verstehen, welche Berechtigungen von welchen Chat SDK Funktionen benötigt werden.

Starten Sie die Client-Demoanwendung neu, und Sie sollten sich jetzt ohne Fehler anmelden können. Sie werden wissen, dass alles erfolgreich war, wenn Sie einen 'Authkey refreshed' Toast erhalten.

AuthKey refreshed

Initiieren Sie eine Unterhaltung zwischen zwei Clients.

Initiate a conversation between two clients

Stummschalten und Sperren von Benutzern mit dem Channel Monitor

Wichtig: Wenn Sie noch keine Konversation zwischen zwei Clients initiiert haben, sollten Sie dies jetzt tun. Kanäle werden von der Demo-Anwendung dynamisch erstellt, so dass sie im Kanalmonitor erst angezeigt werden, wenn der Chat begonnen hat.

Beachten Sie, dass alle unten gezeigten Aktualisierungen der Benutzeroberfläche, wie z. B. das Banner "Auth Key Refreshed" oder das Modal "Banned User", Teil der Demo-Anwendung sind - Ihre Anwendung wird diese Informationen dem Benutzer über ihre eigene Benutzeroberfläche anzeigen.

  • Starten Sie den Channel Monitor, indem Sie sich im Admin-Portal anmelden und das Keyset auswählen, das Sie für das Access Manager-Beispiel und die Client-Anwendung verwendet haben.
  • Gehen Sie zum Abschnitt BizOps Workspace im linken Navigationsbereich und wählen Sie Channel Monitor. Wenn Sie den Abschnitt BizOps Workspace nicht sehen, müssen Sie höchstwahrscheinlich ein Upgrade Ihres PubNub-Tarifs durchführen, aber bitte kontaktieren Sie unseren Support, wenn Sie Probleme haben.
  • Sie werden aufgefordert, Ihre Channels auszuwählen, um die Moderation zu starten. Der Name des Channels lautet 1:1 Benutzer mit USER_ID, wobei USER_ID der Benutzername der Person ist, die die Unterhaltung initiiert hat.
  • Die Kanalnachrichten werden in Echtzeit angezeigt, einschließlich früherer Nachrichten, wenn Sie die Persistenz auf Ihrem Keyset aktiviert haben.

Initial conversation with channel monitor

  • Schalten Sie den Benutzer stumm, indem Sie die Mikrofontaste neben einer von diesem Benutzer gesendeten Nachricht drücken. Auf dem Gerät des stummgeschalteten Benutzers wird eine Nachricht angezeigt, die besagt, dass der Authentifizierungsschlüssel erneuert wurde. Wenn Sie versuchen, eine Nachricht als stummer Benutzer zu senden, wird eine Meldung angezeigt, die besagt, dass dies verboten ist, obwohl der stummgeschaltete Benutzer davon nicht betroffen ist.

Muted user

  • Heben Sie die Stummschaltung des Benutzers auf, indem Sie die Mikrofontaste erneut drücken. Auf dem Gerät des stummgeschalteten Benutzers wird eine Nachricht angezeigt, die Sie darüber informiert, dass der Authentifizierungsschlüssel aktualisiert wurde und das Senden von Nachrichten nun möglich ist.

User unmuted

  • Sperren Sie den Benutzer, indem Sie auf die Schaltfläche "Sperren" neben der von diesem Benutzer gesendeten Nachricht drücken und einen Sperrgrund angeben. Der Grund ist ein Freitext, so dass Sie alle relevanten Informationen angeben können. Der Authentifizierungsschlüssel wird aktualisiert und der Benutzer kehrt zum Chat-Auswahlbildschirm in seiner App zurück.

User is banned

Beim Versuch, auf den gesperrten Kanal zuzugreifen, wird dem Benutzer eine Fehlermeldung angezeigt:

Banned user error message

  • Heben Sie die Sperre des Benutzers auf, indem Sie im Channel-Monitor "Sperre aufheben" wählen. Der Authentifizierungsschlüssel wird aktualisiert. Die Sperre wird aufgehoben und der Benutzer kann wieder auf den Chat zugreifen.

User is unbanned

Zusammenfassung

Die Entwicklung einer Chat-Anwendung ist nur der erste Schritt. Die schwierigsten Herausforderungen kommen nach der Bereitstellung der Anwendung, um Ihre wachsende Benutzerbasis zu unterstützen. BizOps Workspace ist eine Reihe von Tools, die für die Verwaltung aller Aspekte Ihrer Chat-Anwendung entwickelt wurden und die Herausforderungen nach der Einführung vereinfachen.

Obwohl sich dieser Artikel auf das sichere Stummschalten und Sperren von Benutzern konzentriert hat, werden wir die Funktionen von BizOps Workspace weiter ausbauen. Dieser Artikel hat sich auch ausschließlich auf das Chat SDK konzentriert, aber der Channel Monitor kann auch so konfiguriert werden, dass er mit jedem unserer SDKs funktioniert.

Channel monitor configuration

Wenn Sie Hilfe oder Unterstützung benötigen, wenden Sie sich bitte an unser engagiertes Support-Team oder senden Sie eine E-Mail an unser Developer Relations Team unter devrel@pubnub.com.

Wie kann PubNub Ihnen helfen?

Dieser Artikel wurde ursprünglich auf PubNub.com veröffentlicht.

Unsere Plattform hilft Entwicklern bei der Erstellung, Bereitstellung und Verwaltung von Echtzeit-Interaktivität für Webanwendungen, mobile Anwendungen und IoT-Geräte.

Die Grundlage unserer Plattform ist das größte und am besten skalierbare Echtzeit-Edge-Messaging-Netzwerk der Branche. Mit über 15 Points-of-Presence weltweit, die 800 Millionen monatlich aktive Nutzer unterstützen, und einer Zuverlässigkeit von 99,999 % müssen Sie sich keine Sorgen über Ausfälle, Gleichzeitigkeitsgrenzen oder Latenzprobleme aufgrund von Verkehrsspitzen machen.

PubNub erleben

Sehen Sie sich die Live Tour an, um in weniger als 5 Minuten die grundlegenden Konzepte hinter jeder PubNub-gestützten App zu verstehen

Einrichten

Melden Sie sich für einen PubNub-Account an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

Beginnen Sie

Mit den PubNub-Dokumenten können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder SDK

Top comments (0)