Notiondesk Messenger può identificare gli utenti che hanno effettuato l'accesso alla tua applicazione.
L'identificazione avviene tramite un token utente di breve durata generato dal backend. Il frontend passa questo token all'SDK di Messenger Notiondesk all'avvio di Messenger.
Ciò impedisce che le credenziali di autenticazione sensibili vengano esposte nel codice del browser.
Prima di iniziare
Ti serve:
- Notiondesk Messenger installato con il pacchetto
@notiondesk-so/messenger-js-sdk
- Autenticazione già implementata nella tua applicazione
- Un backend in grado di generare un token utente Notiondesk
- Il tuo segreto dell'app Notiondesk
Come funziona l'identificazione dell'utente
Il flusso di autenticazione è il seguente:
- Un utente effettua l'accesso alla tua applicazione
- Il tuo frontend richiede un token utente Notiondesk dal tuo backend
- Il tuo backend firma un token di breve durata per quell'utente autenticato
- Il tuo backend restituisce il token firmato al browser.
- Il tuo sito web o la tua applicazione trasmette il token a Notiondesk Messenger
- Il messaggero riconosce il visitatore come l'utente corrispondente
Il tuo backend dovrebbe determinare l'identità dell'utente a partire dalla sessione autenticata dell'applicazione. Non fidarti di un ID utente fornito direttamente dal browser.
Passaggio 1: crea un segreto dell'app
Vai su Impostazioni → Accesso in Notiondesk e crea un segreto per l'app.
Memorizza il segreto in una variabile d'ambiente lato server, ad esempio:
NOTIONDESK_APP_SECRETPuoi gestire e ruotare i segreti delle tue app da Impostazioni → Accesso .
Non aggiungere mai il segreto dell'app a:
- JavaScript frontend
- Componenti client React o Vue
- Variabili dell'ambiente pubblico
- Pacchetti browser
- Archivi pubblici
Passaggio 2: Firma un token utente sul tuo backend
Genera il token utente dal tuo backend dopo che la tua applicazione ha autenticato l'utente corrente.
I token utente Notiondesk utilizzano HS256 e devono contenere le seguenti attestazioni:
| Reclamo | Descrizione |
|---|---|
type | Tipo di token richiesto da Notiondesk |
iat | Ora di emissione del token |
exp | Tempo di scadenza del token |
user_id | Identificativo univoco per l'utente nella tua applicazione |
site_uuid | Identificativo per il tuo sito Notiondesk |
Utilizzare user_id come identificativo utente. Non utilizzare sub al posto di user_id.
È inoltre possibile fornire informazioni sull'utente come:
email
name
Utilizza token di breve durata e generali solo sul tuo server.
Notiondesk fornisce esempi di firma specifici per linguaggio nella configurazione di Messenger per linguaggi come Node.js, Python, PHP e Ruby. Utilizza l'esempio fornito nella dashboard di Notiondesk anziché firmare i token nel codice del browser.
Passaggio 3: Passa il token a Messenger
Una volta che il tuo backend ha generato il token, passalo alla tua installazione di Messenger.
Installazione standard del sito web
Se hai installato Messenger utilizzando lo script standard, fornisci il token firmato con data-user-token:
Sostituire:
<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_IDcon il tuo ID Messenger
YOUR_SIGNED_TOKENcon il token generato dal tuo backend per l'utente corrente
Non inserire il token dell'utente direttamente nel codice di un modello di sito web statico. Il token deve essere generato per l'utente attualmente autenticato.
SDK JavaScript/TypeScript
Recupera il token firmato dal tuo backend e passalo a initNotiondesk:
L'endpoint /api/notiondesk-token è un esempio. Utilizza il percorso di backend corrispondente alla tua applicazione.
React e Next.js
Passa il token firmato a NotiondeskProvider:
Il token può essere recuperato dal tuo backend dopo che l'utente si è autenticato.
Il segreto dell'app Notiondesk non deve mai essere disponibile al componente client.
Passaggio 4: Convalida del token
Prima di andare online, usa lo strumento di convalida del token disponibile nella configurazione di Messenger.
Incolla il token che il tuo backend ha appena generato.
Notiondesk verifica il token rispetto ai segreti dell'app attivi e mostra all'utente le informazioni che Messenger può leggere da esso.
Il token utilizzato per la convalida viene controllato ma non memorizzato.
La validazione è utile per rilevare:
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>- Mancano le dichiarazioni obbligatorie
- Un
user_iderrato
- Un
site_uuiderrato
- Token scaduti
- Token firmati con la chiave segreta sbagliata
- Firme non valide
Aggiorna un token utente
I token utente dovrebbero avere una durata limitata.
Se la tua applicazione riceve un token aggiornato mentre Messenger è già in fase di inizializzazione, aggiorna la configurazione di Messenger:
Non è necessario creare un'altra istanza di Messenger solo per aggiornare il token utente.
Gestire il logout
Rimuovi l'utente identificato quando qualcuno effettua il logout dalla tua applicazione.
È possibile rimuovere il token corrente:
Oppure disinstalla completamente l'istanza di Messenger:
Assicurati che l'identità dell'utente precedente venga cancellata prima che un altro utente avvii una sessione nello stesso browser.
Carica Messenger solo per utenti autenticati
L'identificazione di un utente e la decisione se Messenger debba essere disponibile sono due questioni distinte.
Se Messenger deve essere caricato solo per gli utenti autentificati, mantieni il controllo delle autorizzazioni all'interno della tua applicazione.
Ad esempio, con React:
L'utilizzo di Messenger in forma anonima può rimanere attivo se l'assistenza clienti deve essere disponibile sia per i visitatori che per i clienti registrati.
migliori pratiche di sicurezza
Quando si identificano gli utenti in Notiondesk Messenger:
notiondesk.updateConfig({
userToken: refreshedUserToken,
});notiondesk.updateConfig({
userToken: null,
});notiondesk.destroy();<NotiondeskProvider
messengerId="YOUR_MESSENGER_ID"
enabled={currentUser.isAuthenticated}
userToken={userToken}
>
{children}
</NotiondeskProvider>- Mantieni segreta la tua app sul server
- Firma i token solo nel tuo backend
- Utilizzare HS256
- Includere tutte le richieste necessarie
- Determina
user_iddalla tua sessione autenticata lato server
- Mantieni i token di breve durata
- Non inserire mai i token utente direttamente nel codice del frontend.
- Aggiorna i token quando necessario
- Cancella il token corrente quando un utente effettua il logout.
- Ruota il segreto della tua app se ritieni che sia stato compromesso.
Risoluzione dei problemi
Messenger non riconosce l'utente
Verifica quanto segue:
- Il token è stato generato dal tuo backend
- Il token non è scaduto
- Sono presenti tutte le richieste necessarie
user_idviene utilizzato al posto disub
site_uuidcorrisponde al sito corretto Notiondesk
- Il token è stato firmato utilizzando un App Secret attivo
userTokenodata-user-tokenviene passato a Messenger
Utilizza il validatore di token nella configurazione di Messenger per verificare cosa Messenger può leggere dal token.
Il token è stato rifiutato
Verifica che il token sia stato firmato utilizzando HS256 e che contenga:
type
iat
exp
user_id
site_uuid
Verifica inoltre che l'App Secret utilizzato per firmare il token sia ancora attivo.
Messenger mostra ancora l'utente precedente
Cancella il token utente quando l'utente corrente effettua il logout:
Se la tua applicazione passa direttamente da un account all'altro, puoi anche eliminare e reinizializzare Messenger.
notiondesk.updateConfig({
userToken: null,
});