DEV Community

Cover image for Jak bezpiecznie moderować czat i użytkowników za pomocą BizOps Workspace

Jak bezpiecznie moderować czat i użytkowników za pomocą BizOps Workspace

Ten artykuł instruktażowy jest częścią serii artykułów omawiających możliwości zarządzania danymi PubNub, znane pod wspólną nazwą BizOps Workspace:

BizOps Workspace to zestaw narzędzi, które pomagają zarządzać aplikacją. Ten artykuł rozszerzy poprzedni artykuł "Jakmonitorować i moderować konwersacjeza pomocą BizOps Workspace", aby pokazać kompleksową bezpieczną aplikację do czatowania z ręcznymi możliwościami moderacji, tj. możliwością monitorowania konwersacji w czasie rzeczywistym oraz wyciszania lub blokowania użytkowników.

Chociaż ten artykuł można czytać samodzielnie, zdecydowanie zalecam przeczytanie poprzedniego artykułu "Jak monitorować i moderować konwersacje zapomocą BizOps Workspace", aby lepiej zrozumieć tło omawianych tutaj koncepcji.

Czym jest Channel Monitor?

Channel Monitor umożliwia moderatorom czatu oglądanie na żywo podglądu rozmów prowadzonych w czasie rzeczywistym na wielu kanałach. Jeśli moderator zauważy coś niepokojącego, takiego jak niewłaściwie zachowujący się użytkownik lub obraźliwe wiadomości, może natychmiast podjąć działania w celu złagodzenia problemu.

Moderator ma dużą swobodę w zakresie podejmowanych działań:

  • Obserwować użytkownika bez ograniczania jego praw dostępu
  • edytować lub usunąć obraźliwą wiadomość
  • ograniczyć możliwość publikowania wiadomości przez użytkownika(wyciszyć)
  • ograniczyć użytkownikowi możliwość czytania lub publikowania wiadomości (ban).

Wszystkie możliwości w ramach funkcji "Monitor" są ręczne: ręczne przeglądanie wiadomości, ręczne wyciszanie użytkowników itp. Ten artykuł nie omawia automatycznej moderacji.

Aby korzystać z funkcji Channel Monitor, konieczne jest włączenie kilku funkcji w zestawie kluczy PubNub, w szczególności kontekstu aplikacji i trwałości wiadomości. Więcej szczegółów można znaleźć w sekcji "Wymagania dotyczące zestawu kluczy dla Channel Monitor" w poprzednim artykule.

Czym jest menedżer dostępu PubNub?

Programiści muszą chronić się przed użytkownikami próbującymi obejść ich system moderacji; można to osiągnąć za pomocą menedżera dostępu PubNub.

Menedżer dostępu pozwala zdefiniować zestaw reguł, które opisują uprawnienia określonego użytkownika (lub użytkowników) i jakie działania mogą wykonywać na określonych zasobach. Na przykład:

  • Użytkownik o identyfikatorze 123 ma uprawnienia do odczytu i zapisu na kanale 456
  • Wszyscy użytkownicy, których ID pasuje do wyrażenia regularnego user-*, mogą czytać z dowolnego kanału, którego ID pasuje do wyrażenia regularnego global-*.
  • Użytkownik o identyfikatorze 123 ma uprawnienia do aktualizacji metadanych kanału (tj. kontekstu aplikacji).

Pełna lista uprawnień znajduje się w dokumentacji na stronie https://www.pubnub.com/docs/general/security/access-control#permissions.

Menedżer dostępu PubNub jest oparty na tokenach, a najłatwiejszym sposobem na jego opisanie jest przejście przez przepływ autoryzacji pokazany w dokumentacji i zapewnienie dodatkowego kontekstu, w jaki sposób ten przepływ odnosi się do moderacji:

Access Manager workflow

  1. Próba logowania. Klient uwierzytelnia się na serwerze, aby zalogować użytkowników do aplikacji. Prawdopodobnie odbywa się to za pośrednictwem dostawcy tożsamości; po tym kroku serwer ma pewność, że rozmawia z zarejestrowanym użytkownikiem aplikacji i kim on jest. Klient żąda tokenu uwierzytelniania PubNub Access Manager w ramach swojej inicjalizacji.
  2. Żądanie przyznania uprawnień. Serwer obsługuje żądanie klienta o token, wywołując interfejs API SDK "grantToken()". Kilka punktów do odnotowania na temat tego API: Można go wywołać tylko za pomocą tajnego klucza PubNub, a zatem można go wywołać tylko z serwera; jest dostępny dla wszystkich naszych zestawów SDK po stronie serwera; i to API zaakceptuje obiekty JSON w celu zdefiniowania zasobów i uprawnień, które definiują dostęp użytkownika (użytkowników).
  3. Zwrócony*token*. PubNub przyznaje żądane uprawnienia żądanym użytkownikom i zwraca token uwierzytelniający do serwera.
  4. Token*przekazany*. Następnie serwer zwraca token uwierzytelniający do pierwotnego klienta wywołującego.
  5. Token ustawiony. Klient może określić ten token uwierzytelniający podczas inicjalizacji lub w dowolnym momencie cyklu życia aplikacji za pomocą metody setToken(). Możliwość aktualizacji tokena w dowolnym momencie jest niezbędna, ponieważ tokeny wygasają, ale klient będzie również musiał zażądać nowego tokena, jeśli Channel Monitor zaktualizuje swoje uprawnienia (tj. zostanie wyciszony lub zbanowany).
  6. Autoryzowane żądanie API. Wszelkie kolejne połączenia z PubNub będą teraz uznawane za autoryzowane. PubNub zezwoli lub odrzuci każde żądanie API w oparciu o uprawnienia przyznane w kroku 2 i ważność tokena klienta.

Jak wygląda bezpieczne rozwiązanie moderacyjne?

Pod koniec poprzedniego artykułu pokazałem demo tego, jak wyglądałoby wyciszanie lub banowanie po stronie klienta. Chat SDK zawiera zdarzenia moderacji, które informują klienta o tym, czy został wyciszony lub zbanowany; jednak poza aktualizacją interfejsu użytkownika nie uniemożliwia to klientowi dalszego wysyłania wiadomości, mimo że został wyciszony/zbanowany. Aby bezpiecznie wyciszyć lub zablokować klienta, należy cofnąć jego istniejące uprawnienia Menedżera dostępu i przyznać mu nowe, aby odzwierciedlić jego nowy status wyciszenia lub zablokowania.

Rozważmy następujący scenariusz, w którym użytkownik został wyciszony z kanału "musicale":

Secure chat sequence diagram

  1. Użytkownik ma dostęp do dwóch kanałów, "filmy" i "musicale", ale administrator chce wyciszyć go tylko z kanału "musicale".
  2. Moderator wycisza użytkownika za pomocą Monitora kanałów. Pod przykrywką jest to wywołanie interfejsu API "setRestrictions()
  3. Aplikacja serwerowa otrzymuje powiadomienie o "wyciszeniu" za pośrednictwem zdarzenia moderacji i unieważnia istniejący token dostępu użytkownika.
  4. Aplikacja kliencka otrzymuje powiadomienie "mute" powiązane z kanałem "musicals" poprzez zdarzenie moderacji.
  5. Aplikacja aktualizuje swój interfejs użytkownika, aby zapobiec wysyłaniu większej liczby wiadomości. Użytkownik może obejść tę zmianę interfejsu użytkownika, modyfikując JavaScript strony, ale każda próba wysłania wiadomości zakończy się niepowodzeniem, ponieważ jego token uwierzytelniający został cofnięty.
  6. Aplikacja żąda nowego tokenu uwierzytelniania z serwera, jak opisano w sekcji Menedżer dostępu powyżej. Nowo przyznany token będzie odzwierciedlał nowe uprawnienia użytkownika, w tym tylko dostęp "do odczytu" do kanału "musicale".

W poprzednim artykule opisano "Składniki rozwiązania do moderacji" i wymieniono interfejsy API dostępne zarówno dla klienta, jak i serwera, korzystając z poniższej grafiki. Interfejsy API omówione w powyższych krokach są również pokazane na tej grafice.

Table showing components of a chat moderation solution

Przykładowa aplikacja Chat SDK

Ten sam zapracowany zespół inżynierów odpowiedzialny za rozwój Channel Monitor i Chat SDK stworzył również przykładową aplikację napisaną w React Native, która korzysta z Chat SDK.

Próbka pokazuje możliwości SDK i najlepsze praktyki tworzenia realistycznej i w pełni funkcjonalnej aplikacji czatu przy użyciu PubNub. Jest to open source i część tego samego repozytorium GitHub, które zawiera Chat SDK pod /samples/react-native-group-chat.

Sample app running on iOS and Android

Ta aplikacja została niedawno zaktualizowana, aby żądać tokenów z serwera Access Manager i żądać nowego tokena, gdy uprawnienia użytkownika ulegną zmianie, tj. zostaną zablokowane lub wyciszone z kanałów. To ulepszenie zostało wprowadzone od czasu napisania poprzedniego artykułu, więc pamiętaj, aby pobrać najnowsze źródło z GitHub. W chwili pisania tego tekstu najnowszy identyfikator zatwierdzenia git to ae9dfa0

Bezpieczne wyciszanie i banowanie użytkowników: Demo przy użyciu przykładowej aplikacji

W tej sekcji opisano, jak uruchomić nasze kompleksowe demo, pokazujące bezpieczną moderację zarówno z perspektywy klienta, jak i serwera.

Tworzenie zestawu kluczy PubNub

Zalecam utworzenie nowego zestawu kluczy PubNub, aby uruchomić to demo w następujący sposób:

  1. Zaloguj się do portalu administratora i utwórz nową aplikację lub nowy zestaw kluczy w istniejącej aplikacji. W razie potrzeby możesz znaleźć instrukcje krok po kroku w naszym Jak utworzyć klucze portalu administracyjnego.
  2. Na stronie zestawów kluczy włącz następujące opcje konfiguracji. Możesz zaakceptować ustawienia domyślne, chyba że określono inaczej:
  • App Context. Przechowuje on metadane o kanałach i użytkownikach i został opisany w poprzednim artykule na temat"Zarządzania użytkownikami i kanałami". Włącz także zdarzenia metadanych użytkownika, zdarzenia metadanych kanału i zdarzenia członkostwa.
  • Trwałość wiadomości. Przechowuje historię wiadomości w PubNub, dzięki czemu administrator może przeglądać i edytować konwersacje.
  • Menedżer dostępu. Zapobiega nieautoryzowanemu dostępowi do danych i jest wymagany do stworzenia bezpiecznego rozwiązania moderacji.
  • Obecność. Służy do śledzenia, czy użytkownik jest online czy offline.

Zapisz zmiany.

W kolejnych krokach potrzebne będą klucze Publish Key, Subscribe Key i Secret Key.

Tworzenie przykładowej aplikacji

Jak opisano wcześniej, aplikacja Chat SDK Sample jest wieloplatformową aplikacją kliencką napisaną w React Native przy użyciu frameworka Expo.

Sklonuj i zbuduj przykładową aplikację, postępując zgodnie z instrukcjami podanymi w readme aplikacji. W szczególności upewnij się, że masz zainstalowane wymagania wstępne, w tym yarn i Node.js. ReadMe mówi o korzystaniu z XCode i iOS, ale można również uruchomić aplikację na emulatorze Androida. W chwili pisania tego tekstu najnowszy identyfikator zatwierdzenia git to ae9dfa0

Podając klucze Pub/Sub, użyj kluczy wygenerowanych w poprzednim kroku. Jeśli nie umieścisz kluczy w pliku .env, aplikacja będzie domyślnie korzystać z niektórych kluczy demonstracyjnych; możesz wyłączyć tę logikę na stronie https://github.com/pubnub/js-chat/blob/ae9dfa0/samples/react-native-group-chat/App.tsx#L60, aby uniknąć nieporozumień.

Uruchom aplikację. ReadMe instruuje, aby uruchomić yarn ios, ale można również uruchomić yarn android lub yarn run start, z których ten ostatni daje interaktywne menu.

Po zalogowaniu w konsoli powinno pojawić się następujące ostrzeżenie:

Failed log message

Dzieje się tak, ponieważ klient nie połączył się z serwerem Access Manager, więc zbudujmy go.

Tworzenie przykładowego serwera Access Manager

Sample Access Manager Server można znaleźć pod adresem https://github.com/pubnub/js-chat/tree/master/samples/access-manager-api, jest to ten sam monorepo, co aplikacja kliencka omówiona wcześniej.

Otwórz plik src/chatsdk.service. ts w wybranym edytorze i wypełnij pola publishKey, subscribeKey i secretKey. Klucze publish i subscribe muszą być zgodne z tymi, których użyto do utworzenia aplikacji klienckiej, a klucz tajny jest dostępny na stronie zestawu kluczy dla aplikacji w portalu administratora

Z katalogu REPO/samples/access-manager-api uruchom polecenie yarn run start, aby uruchomić serwer Access Manager, a powinieneś zobaczyć coś takiego jak poniżej:

Sample Access Manager Server output

Aby zobaczyć, co robi serwer Access Manager, spójrz na app.service.ts. Zobaczysz struktury uprawnień wygenerowane dla żądającego użytkownika i wywołanie chat.sdk.grantToken() w celu zastosowania tych uprawnień, zwracając wygenerowany klucz authKey do klienta wywołującego.

Są to uprawnienia wymagane przez aplikację demonstracyjną, ale Twoja aplikacja prawdopodobnie będzie potrzebować innych uprawnień. Możesz użyć tego dostarczonego zestawu reguł jako szablonu początkowego, ale podczas tworzenia serwera Access Manager dla swojej aplikacji skonsultuj się z https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions, aby dokładnie zrozumieć, jakie uprawnienia są wymagane przez poszczególne funkcje Chat SDK.

Uruchom ponownie aplikację demonstracyjną klienta i powinieneś być teraz w stanie zalogować się bez błędów. Będziesz wiedział, że wszystko się powiodło, gdy otrzymasz toast "Authkey refreshed".

AuthKey refreshed

Zainicjuj rozmowę między dwoma klientami.

Initiate a conversation between two clients

Wyciszanie i banowanie użytkowników za pomocą Monitora kanałów

Ważne: Jeśli wcześniej nie zainicjowałeś konwersacji między dwoma klientami, zrób to teraz. Kanały są tworzone dynamicznie przez aplikację demonstracyjną, więc będą wyświetlane w Channel Monitor dopiero po rozpoczęciu czatu.

Należy pamiętać, że wszelkie aktualizacje interfejsu użytkownika pokazane poniżej, takie jak baner "auth key refreshed" lub modal "banned user", są częścią aplikacji demonstracyjnej - Twoja aplikacja wyświetli te informacje użytkownikowi za pośrednictwem własnego interfejsu użytkownika.

  • Uruchom Channel Monitor, logując się do portalu administratora i wybierając zestaw kluczy użyty dla próbki Access Manager i aplikacji klienckiej.
  • Przejdź do sekcji BizOps Workspace w lewym panelu nawigacyjnym i wybierz Channel Monitor. Jeśli nie widzisz sekcji BizOps Workspace, prawie na pewno musisz zaktualizować swój plan PubNub, ale w razie jakichkolwiek problemów skontaktuj się z naszym działem pomocy technicznej.
  • Zostaniesz poproszony o wybranie kanałów do rozpoczęcia moderacji. Nazwa kanału będzie miała postać 1:1 użytkownik z USER_ID, gdzie USER_ID to nazwa użytkownika osoby, która zainicjowała konwersację.
  • Wiadomości na kanale będą wyświetlane w czasie rzeczywistym, w tym poprzednie wiadomości, jeśli w zestawie klawiszy włączona jest funkcja trwałości.

Initial conversation with channel monitor

  • Wycisz użytkownika, naciskając przycisk mikrofonu obok wiadomości wysłanej przez tego użytkownika. Na urządzeniu wyciszonego użytkownika pojawi się komunikat informujący, że klucz autoryzacji został odświeżony. Próba wysłania wiadomości jako wyciszony użytkownik spowoduje wyświetlenie okna dialogowego z informacją, że jest to zabronione, ale nie ma to wpływu na niewyciszonego użytkownika.

Muted user

  • Wyłącz wyciszenie użytkownika, naciskając ponownie przycisk mikrofonu. Na urządzeniu niewyciszonego użytkownika pojawi się komunikat informujący, że klucz autoryzacji został odświeżony i wysyłanie wiadomości będzie teraz możliwe.

User unmuted

  • Zbanuj użytkownika, naciskając przycisk bana obok wiadomości wysłanej przez tego użytkownika i podając powód bana. Powód jest tekstem swobodnym, więc możesz podać dowolne istotne informacje. Klucz autoryzacji zostanie odświeżony, a użytkownik powróci do ekranu wyboru czatu w swojej aplikacji.

User is banned

Próba uzyskania dostępu do zablokowanego kanału spowoduje wyświetlenie błędu:

Banned user error message

  • Odblokuj użytkownika, wybierając opcję "Usuń blokadę" w Monitorze kanałów. Klucz autoryzacji zostanie odświeżony. Użytkownik zostanie odbanowany i będzie mógł ponownie uzyskać dostęp do czatu.

User is unbanned

Podsumowanie

Opracowanie dowolnej aplikacji cz atu to tylko pierwszy krok. Najtrudniejsze wyzwania pojawiają się po wdrożeniu aplikacji do obsługi rosnącej bazy użytkowników. BizOps Workspace to zestaw narzędzi zaprojektowanych do zarządzania każdym aspektem aplikacji czatu, upraszczając wyzwania po uruchomieniu.

Chociaż w tym artykule skupiliśmy się na bezpiecznym wyciszaniu i banowaniu użytkowników, nadal rozszerzamy funkcje BizOps Workspace. Ten artykuł skupiał się również wyłącznie na Chat SDK, ale Channel Monitor można również skonfigurować do pracy z dowolnym z naszych SDK.

Channel monitor configuration

Jeśli potrzebujesz pomocy lub wsparcia, skontaktuj się z naszym dedykowanym zespołem wsparcia lub napisz do naszego zespołu ds. relacji z programistami na adres devrel@pubnub.com.

Jak PubNub może ci pomóc?

Ten artykuł został pierwotnie opublikowany na PubNub.com

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Fundamentem naszej platformy jest największa w branży i najbardziej skalowalna sieć przesyłania wiadomości w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub

Sprawdź Live Tour, aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację

Załóż konto PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij

Dokumenty PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub zestawu SDK.

Top comments (0)