Identifica gli utenti che hanno effettuato l'accesso in Notiondesk Messenger

Identifica in modo sicuro gli utenti autenticati in Notiondesk Messenger utilizzando token utente di breve durata generati dal tuo backend.

5 min di lettura

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
Non esporre mai il tuo segreto dell'app Notiondesk nel codice JavaScript del frontend, nei componenti React, nelle variabili d'ambiente inviate al browser o nei repository pubblici.

Come funziona l'identificazione dell'utente

Il flusso di autenticazione è il seguente:

  1. Un utente effettua l'accesso alla tua applicazione
  1. Il tuo frontend richiede un token utente Notiondesk dal tuo backend
  1. Il tuo backend firma un token di breve durata per quell'utente autenticato
  1. Il tuo backend restituisce il token firmato al browser.
  1. Il tuo sito web o la tua applicazione trasmette il token a Notiondesk Messenger
  1. 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_SECRET
Il codice segreto dell'app viene mostrato una sola volta, al momento della sua creazione. Copialo e conservalo in un luogo sicuro non appena appare.

Puoi 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
typeTipo di token richiesto da Notiondesk
iatOra di emissione del token
expTempo di scadenza del token
user_idIdentificativo univoco per l'utente nella tua applicazione
site_uuidIdentificativo 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_ID con il tuo ID Messenger
  • YOUR_SIGNED_TOKEN con 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_id errato
  • Un site_uuid errato
  • 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_id dalla 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_id viene utilizzato al posto di sub
  • site_uuid corrisponde al sito corretto Notiondesk
  • Il token è stato firmato utilizzando un App Secret attivo
  • userToken o data-user-token viene 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,
});
Questa pagina è stata utile?