Notiondesk Messenger może identyfikować użytkowników zalogowanych do Twojej aplikacji.
Identyfikacja wykorzystuje krótkotrwały token użytkownika generowany przez Twój back-end. Twój front-end przekazuje ten token do Notiondesk Messenger SDK podczas inicjalizacji Messengera.
Zapobiega to ujawnieniu poufnych danych uwierzytelniających w kodzie przeglądarki.
Zanim zaczniesz
Potrzebujesz:
- Notiondesk Messenger zainstalowany z pakietem
@notiondesk-so/messenger-js-sdk
- Uwierzytelnianie jest już zaimplementowane w Twojej aplikacji
- Zaplecze, które może wygenerować token użytkownika Notiondesk
- Twój sekret aplikacji Notiondesk
Jak działa identyfikacja użytkownika
Przepływ uwierzytelniania jest następujący:
- Użytkownik loguje się do Twojej aplikacji
- Twój front-end żąda od swojego zaplecza tokenu użytkownika Notiondesk
- Twój back-end podpisuje krótkotrwały token dla tego uwierzytelnionego użytkownika
- Twój back-end zwraca podpisany token do przeglądarki
- Twoja witryna lub aplikacja przekazuje token do Notiondesk Messenger
- Messenger rozpoznaje odwiedzającego jako odpowiedniego użytkownika
Twój system zaplecza powinien określić tożsamość użytkownika na podstawie uwierzytelnionej sesji aplikacji. Nie ufaj identyfikatorowi użytkownika dostarczonemu bezpośrednio przez przeglądarkę.
Krok 1: Utwórz tajny klucz aplikacji
Przejdź do Ustawień → Dostęp w Notiondesk i utwórz tajny klucz aplikacji.
Zapisz sekret w zmiennej środowiskowej po stronie serwera, na przykład:
NOTIONDESK_APP_SECRETMożesz zarządzać swoimi sekretami aplikacji i zmieniać je w Ustawieniach → Dostęp .
Nigdy nie dodawaj tajnego klucza aplikacji do:
- JavaScript front-end
- Komponenty klienckie React lub Vue
- Publiczne zmienne środowiskowe
- Pakiety przeglądarek
- Publiczne repozytoria
Krok 2: Podpisz token użytkownika w swoim zapleczu
Wygeneruj token użytkownika z zaplecza po uwierzytelnieniu bieżącego użytkownika przez aplikację.
Tokeny użytkownika Notiondesk korzystają z protokołu HS256 i muszą zawierać następujące oświadczenia:
| Prawo | Opis |
|---|---|
type | Typ tokena wymagany przez Notiondesk |
iat | Czas wydania tokena |
exp | Czas wygaśnięcia tokena |
user_id | Unikalny identyfikator użytkownika w Twojej aplikacji |
site_uuid | Identyfikator Twojej witryny Notiondesk |
Użyj user_id jako identyfikatora użytkownika. Nie używaj sub zamiast user_id.
Możesz również podać informacje o użytkowniku, takie jak:
email
name
Zadbaj o to, aby tokeny miały krótki okres ważności i generuj je tylko na swoim serwerze.
Notiondesk zawiera przykłady podpisywania dla konkretnych języków w konfiguracji Messengera, dla takich języków jak Node.js, Python, PHP i Ruby. Zamiast podpisywać tokeny w kodzie przeglądarki, skorzystaj z przykładu podanego w panelu Notiondesk.
Krok 3: Przekaż token do Messengera
Gdy zaplecze wygeneruje token, przekaż go do instalacji Messengera.
Standardowa instalacja witryny internetowej
Jeżeli zainstalowałeś Messengera za pomocą standardowego skryptu, podaj podpisany token za pomocą data-user-token:
Zastępować:
<script
async
src="https://static.notiondesk.help/messenger/widget.js"
data-messenger-id="YOUR_MESSENGER_ID"
data-user-token="YOUR_SIGNED_TOKEN">
</script>YOUR_MESSENGER_IDz Twoim identyfikatorem Messenger
YOUR_SIGNED_TOKENz tokenem wygenerowanym przez zaplecze dla bieżącego użytkownika
Nie koduj na stałe tokena użytkownika w statycznym szablonie witryny. Token powinien zostać wygenerowany dla aktualnie uwierzytelnionego użytkownika.
Zestaw SDK JavaScript/TypeScript
Pobierz podpisany token ze swojego zaplecza i przekaż go do initNotiondesk:
Punkt końcowy /api/notiondesk-token jest przykładem. Użyj trasy zaplecza, która pasuje do Twojej aplikacji.
React i Next.js
Przekaż podpisany token do NotiondeskProvider:
Token można pobrać z zaplecza po uwierzytelnieniu użytkownika.
Klucz aplikacji Notiondesk nie może być nigdy dostępny dla komponentu klienta.
Krok 4: Zweryfikuj token
Przed uruchomieniem należy skorzystać z narzędzia do weryfikacji tokenów dostępnego w konfiguracji Notiondesk Messenger.
Wklej token, który właśnie wygenerował Twój serwer.
Notiondesk sprawdza, czy token jest zgodny z aktywnymi sekretami aplikacji i wyświetla informacje o użytkowniku, które aplikacja Messenger może z niego odczytać.
Token używany do walidacji jest sprawdzany, ale nie przechowywany.
Walidacja jest przydatna do wykrywania:
import { initNotiondesk } from "@notiondesk-so/messenger-js-sdk";
const userToken = await fetch("/api/notiondesk-token").then((response) =>
response.ok ? response.text() : null,
);
const notiondesk = await initNotiondesk({
messengerId: "YOUR_MESSENGER_ID",
userToken,
});<NotiondeskProvider
messengerId="YOUR_MESSENGER_ID"
userToken={userToken}
>
{children}
</NotiondeskProvider>- Brak wymaganych roszczeń
- Nieprawidłowy
user_id
- Nieprawidłowy
site_uuid
- Wygasłe tokeny
- Tokeny podpisane niewłaściwym kluczem tajnym
- Nieprawidłowe podpisy
Odśwież token użytkownika
Tokeny użytkownika powinny mieć krótki okres ważności.
Jeśli Twoja aplikacja otrzyma odświeżony token, gdy Messenger jest już zainicjowany, zaktualizuj konfigurację Messenger:
Nie musisz tworzyć kolejnej instancji Messengera, aby zaktualizować token użytkownika.
Obsługa wylogowania
Wyczyść zidentyfikowanego użytkownika, gdy ktoś wyloguje się z Twojej aplikacji.
Możesz usunąć bieżący token:
Lub całkowicie zniszcz instancję Messengera:
Przed rozpoczęciem sesji w tej samej przeglądarce przez innego użytkownika należy upewnić się, że tożsamość poprzedniego użytkownika została wyczyszczona.
Załaduj Messenger tylko dla uwierzytelnionych użytkowników
Identyfikacja użytkownika i decyzja o dostępności Messengera to odrębne kwestie.
Jeśli aplikacja Messenger ma być ładowana tylko dla zalogowanych użytkowników, zaznacz odpowiednie uprawnienia w swojej aplikacji.
Na przykład z React:
Możesz nadal korzystać z anonimowego komunikatora Messenger, jeśli chcesz, aby pomoc techniczna była dostępna zarówno dla odwiedzających, jak i zalogowanych klientów.
Najlepsze praktyki bezpieczeństwa
Podczas identyfikacji użytkowników w Notiondesk Messenger:
notiondesk.updateConfig({
userToken: refreshedUserToken,
});notiondesk.updateConfig({
userToken: null,
});notiondesk.destroy();<NotiondeskProvider
messengerId="YOUR_MESSENGER_ID"
enabled={currentUser.isAuthenticated}
userToken={userToken}
>
{children}
</NotiondeskProvider>- Zachowaj tajność swojej aplikacji na serwerze
- Podpisuj tokeny tylko na swoim zapleczu
- Użyj HS256
- Uwzględnij wszystkie wymagane roszczenia
- Określ
user_idna podstawie uwierzytelnionej sesji po stronie serwera
- Utrzymuj tokeny o krótkim okresie ważności
- Nigdy nie koduj na stałe tokenów użytkownika w kodzie front-end
- Odśwież tokeny w razie potrzeby
- Wyczyść bieżący token, gdy użytkownik się wyloguje
- Obróć swój sekret aplikacji, jeśli uważasz, że został ujawniony
Rozwiązywanie problemów
Messenger nie rozpoznaje użytkownika
Sprawdź, czy:
- Token został wygenerowany przez Twój back-end
- Token nie wygasł
- Wszystkie wymagane roszczenia są obecne
- Zamiast
substosuje sięuser_id
site_uuidpasuje do prawidłowej lokalizacji Notiondesk
- Token został podpisany przy użyciu aktywnego klucza tajnego aplikacji
userTokenlubdata-user-tokenjest przekazywane do Messengera
Użyj walidatora tokenów w konfiguracji Notiondesk Messenger, aby sprawdzić, co Messenger może odczytać z tokena.
Token został odrzucony
Sprawdź, czy token został podpisany przy użyciu protokołu HS256 i zawiera:
type
iat
exp
user_id
site_uuid
Sprawdź również, czy tajny klucz aplikacji użyty do podpisania tokena jest nadal aktywny.
Messenger nadal pokazuje poprzedniego użytkownika
Wyczyść token użytkownika, gdy bieżący użytkownik się wyloguje:
Jeśli Twoja aplikacja przełącza się bezpośrednio między kontami, możesz także zniszczyć i ponownie zainicjować Messengera.
notiondesk.updateConfig({
userToken: null,
});