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-sdkpakket
- Authenticatie is al geïmplementeerd in uw applicatie.
- Een backend die een Notiondesk gebruikerstoken kan genereren
- Jouw Notiondesk app-geheim
Hoe gebruikersidentificatie werkt
De authenticatieprocedure is als volgt:
- Een gebruiker meldt zich aan bij uw applicatie.
- Je frontend vraagt een Notiondesk gebruikerstoken aan bij je backend.
- Uw backend genereert een kortstondig token voor die geauthenticeerde gebruiker.
- Uw backend stuurt het ondertekende token terug naar de browser.
- Uw website of applicatie stuurt het token door naar Notiondesk Messenger
- 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_SECRETJe 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 |
|---|---|
type | Tokentype vereist door Notiondesk |
iat | Tijdstip waarop het token werd uitgegeven |
exp | Tijdstip waarop het token verloopt |
user_id | Unieke identificatiecode voor de gebruiker in uw applicatie. |
site_uuid | Identificatiecode 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_TOKENmet 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_idaan 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_idwordt gebruikt in plaats vansub.
site_uuidkomt overeen met de juiste Notiondesk-site
- Het token is ondertekend met behulp van een actief app-geheim.
userTokenofdata-user-tokenwordt 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,
});