Identificeer ingelogde gebruikers in Messenger

Identificeer geauthenticeerde gebruikers in Messenger op een veilige manier met behulp van kortstondige gebruikerstokens die door uw backend worden gegenereerd.

5 min lezen

Messenger kan gebruikers identificeren die zijn ingelogd bij uw applicatie.

Identificatie maakt gebruik van een kortstondig gebruikerstoken dat door uw backend wordt gegenereerd. Uw frontend geeft dit token door aan de Messenger SDK wanneer Messenger wordt geïnitialiseerd.

Dit voorkomt dat gevoelige authenticatiegegevens in de browsercode worden blootgesteld.

Voordat je begint

Je hebt nodig:

  • Notiondesk Messenger geïnstalleerd met het @notiondesk-so/messenger-js-sdk pakket
  • Authenticatie is al geïmplementeerd in uw applicatie.
  • Een backend die een Notiondesk gebruikerstoken kan genereren
  • Jouw Notiondesk app-geheim
Geef uw Notiondesk App Secret nooit vrij in frontend JavaScript, React-componenten, omgevingsvariabelen die naar de browser worden verzonden of openbare repositories.

Hoe gebruikersidentificatie werkt

De authenticatieprocedure is als volgt:

  1. Een gebruiker meldt zich aan bij uw applicatie.
  1. Je frontend vraagt ​​een Notiondesk gebruikerstoken aan bij je backend.
  1. Uw backend genereert een kortstondig token voor die geauthenticeerde gebruiker.
  1. Uw backend stuurt het ondertekende token terug naar de browser.
  1. Uw website of applicatie stuurt het token door naar Notiondesk Messenger
  1. Messenger herkent de bezoeker als de betreffende gebruiker.

Je backend moet de identiteit van de gebruiker bepalen aan de hand van de geauthenticeerde applicatiesessie. Vertrouw niet op een gebruikers-ID die rechtstreeks door de browser wordt verstrekt.

Stap 1: Maak een app-geheim aan.

Ga naar Instellingen → Toegang in Notiondesk en maak een app-geheim aan.

Sla het geheim op in een omgevingsvariabele aan de serverzijde, bijvoorbeeld:

NOTIONDESK_APP_SECRET
Het app-geheim wordt slechts één keer weergegeven, namelijk bij het aanmaken ervan. Kopieer het en bewaar het veilig zodra het verschijnt.

Je kunt je app-geheimen beheren en wijzigen via Instellingen → Toegang .

Voeg het app-geheim nooit toe aan:

  • Frontend JavaScript
  • React- of Vue-clientcomponenten
  • Variabelen van de publieke omgeving
  • Browserbundels
  • Openbare repositories

Stap 2: Onderteken een gebruikerstoken op uw backend.

Genereer het gebruikerstoken vanuit je backend nadat je applicatie de huidige gebruiker heeft geverifieerd.

Notiondesk gebruikerstokens gebruiken HS256 en moeten de volgende claims bevatten:

Claim Beschrijving
typeTokentype vereist door Notiondesk
iatTijdstip waarop het token werd uitgegeven
expTijdstip waarop het token verloopt
user_idUnieke identificatiecode voor de gebruiker in uw applicatie.
site_uuidIdentificatiecode voor uw Notiondesk-site

Gebruik user_id als gebruikersidentificatie. Gebruik niet sub in plaats van user_id.

U kunt ook gebruikersinformatie verstrekken, zoals:

  • email
  • name

Zorg ervoor dat tokens een korte geldigheidsduur hebben en genereer ze alleen op je eigen server.

Notiondesk biedt taalspecifieke ondertekeningsvoorbeelden in je Messenger-instellingen voor talen zoals Node.js, Python, PHP en Ruby. Gebruik het voorbeeld in je Notiondesk-dashboard in plaats van tokens te ondertekenen in browsercode.

Stap 3: Geef het token door aan Messenger

Zodra je backend het token heeft gegenereerd, geef je het door aan je Messenger-installatie.

Standaard website-installatie

Als je Messenger hebt geïnstalleerd met het standaardscript, geef dan het ondertekende token op met data-user-token:

Vervangen:

<script
  async
  src="https://static.notiondesk.help/messenger/widget.js"
  data-messenger-id="YOUR_MESSENGER_ID"
  data-user-token="YOUR_SIGNED_TOKEN">
</script>
  • __GEVOORBEHOUDEN_27__ met je Messenger-ID
  • YOUR_SIGNED_TOKEN met het token dat door uw backend is gegenereerd voor de huidige gebruiker

Gebruik geen hardgecodeerde gebruikerstoken in een statische websitetemplate. De token moet worden gegenereerd voor de huidige ingelogde gebruiker.

JavaScript/TypeScript SDK

Haal het ondertekende token op van je backend en geef het door aan initNotiondesk:

Het eindpunt /api/notiondesk-token is een voorbeeld. Gebruik de backend-route die overeenkomt met uw applicatie.

React en Next.js

Geef het ondertekende token door aan NotiondeskProvider:

Het token kan na authenticatie van de gebruiker worden opgehaald uit uw backend.

Het Notiondesk App Secret mag nooit beschikbaar zijn voor de clientcomponent.

Stap 4: Valideer het token

Voordat je live gaat, gebruik je de tokenvalidatietool die beschikbaar is in je Messenger-instellingen.

Plak hier het token dat uw backend zojuist heeft gegenereerd.

Notiondesk controleert het token aan de hand van je actieve app-geheimen en toont de gebruikersinformatie die Messenger daaruit kan lezen.

Het token dat voor validatie wordt gebruikt, wordt gecontroleerd maar niet opgeslagen.

Validatie is nuttig voor het detecteren van:

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>
  • Ontbrekende vereiste claims
  • Een onjuiste user_id
  • Een onjuiste site_uuid
  • Verlopen tokens
  • Tokens ondertekend met een onjuist geheim
  • Ongeldige handtekeningen

Vernieuw een gebruikerstoken

Gebruikerstokens moeten een korte geldigheidsduur hebben.

Als uw applicatie een vernieuwd token ontvangt terwijl Messenger al is geïnitialiseerd, moet u de Messenger-configuratie bijwerken:

Je hoeft geen nieuwe Messenger-instantie aan te maken om het gebruikerstoken bij te werken.

Uitloggen afhandelen

Verwijder de geïdentificeerde gebruiker wanneer iemand uitlogt uit uw applicatie.

U kunt het huidige token verwijderen:

Of vernietig het Messenger-exemplaar volledig:

Zorg ervoor dat de identiteit van de vorige gebruiker wordt gewist voordat een andere gebruiker een sessie start in dezelfde browser.

Messenger is alleen beschikbaar voor geauthenticeerde gebruikers.

Het identificeren van een gebruiker en de beslissing of Messenger beschikbaar moet zijn, zijn twee afzonderlijke kwesties.

Als Messenger alleen voor ingelogde gebruikers moet laden, moet je die toestemmingscontrole binnen je applicatie houden.

Bijvoorbeeld met React:

Het gebruik van anonieme Messenger kan ingeschakeld blijven als uw ondersteuningservaring beschikbaar moet zijn voor zowel bezoekers als ingelogde klanten.

Best practices op het gebied van beveiliging

Bij het identificeren van gebruikers in Messenger:

notiondesk.updateConfig({
  userToken: refreshedUserToken,
});
notiondesk.updateConfig({
  userToken: null,
});
notiondesk.destroy();
<NotiondeskProvider
  messengerId="YOUR_MESSENGER_ID"
  enabled={currentUser.isAuthenticated}
  userToken={userToken}
>
  {children}
</NotiondeskProvider>
  • Bewaar je app-geheim op de server.
  • Onderteken tokens alleen op uw backend.
  • Gebruik HS256
  • Voeg alle vereiste declaraties toe.
  • Bepaal user_id aan de hand van uw geauthenticeerde serversessie.
  • Houd tokens kortstondig geldig.
  • Codeer gebruikerstokens nooit rechtstreeks in de frontend-code.
  • Vernieuw tokens indien nodig.
  • Het huidige token wordt gewist wanneer een gebruiker uitlogt.
  • Wijzig je app-geheim als je denkt dat het is blootgesteld.

Probleemoplossing

Messenger herkent de gebruiker niet.

Controleer dat:

  • Het token is gegenereerd door uw backend.
  • Het token is nog niet verlopen.
  • Alle vereiste documenten zijn aanwezig.
  • user_id wordt gebruikt in plaats van sub.
  • site_uuid komt overeen met de juiste Notiondesk-site
  • Het token is ondertekend met behulp van een actief app-geheim.
  • userToken of data-user-token wordt doorgegeven aan Messenger

Gebruik de tokenvalidator in je Messenger-instellingen om te controleren wat Messenger uit het token kan lezen.

Het token wordt afgewezen

Controleer of het token is ondertekend met HS256 en de volgende informatie bevat:

  • type
  • iat
  • exp
  • user_id
  • site_uuid

Controleer ook of het App Secret dat gebruikt is om het token te ondertekenen nog steeds actief is.

Messenger toont nog steeds de vorige gebruiker.

Verwijder het gebruikerstoken wanneer de huidige gebruiker uitlogt:

Als je applicatie direct tussen accounts schakelt, kun je Messenger ook afsluiten en opnieuw initialiseren.

notiondesk.updateConfig({
  userToken: null,
});
Was deze pagina nuttig?