Authentification des utilisateurs dans la discussion Web
Lorsque la sécurité de la discussion Web est activée, vous pouvez authentifier les clients en toute sécurité par ID utilisateur.
Le comportement par défaut de l'intégration de discussion Web consiste à identifier des utilisateurs uniques en définissant la valeur de la propriété user_id qui est envoyée dans le cadre de chaque message à l'assistant. Pour plus
d'informations, voir Gestion des informations d'identité des utilisateurs dans la discussion Web.
Cette approche est suffisante pour le suivi des utilisateurs uniques à des fins de facturation, mais elle n'est pas sécurisée et ne doit pas être utilisée pour le contrôle d'accès. Si vous activez la sécurité de la discussion Web, utilisez des jetons Web JSON (JWT) pour authentifier vos utilisateurs de manière sécurisée et contrôler l'accès aux fonctions de votre assistant qui requièrent une autorisation.
Authentification avec la revendication sub
Pour utiliser cette méthode d'authentification des utilisateurs, vous devez d'abord activer la fonction de sécurité de la discussion Web. Pour plus d'informations, voir Activation de la sécurité de la discussion Web.
Lorsque vous créez un jeton JWT pour la discussion Web, vous devez spécifier une valeur pour la réclamation sub (sujet), qui identifie l'utilisateur. Pour les utilisateurs anonymes, vous pouvez utiliser un ID unique généré.
Lorsque vous générez un ID utilisateur pour un utilisateur anonyme, veillez à enregistrer l'ID généré dans un cookie afin d'éviter d'être facturé plusieurs fois pour le même client.
Lorsque l'intégration de discussion Web reçoit un message signé avec ce jeton Web JSON (JWT), elle stocke l'ID utilisateur de la réclamation sub en tant que system_integrations.channel.private.user.id dans les actions
et integrations.channel.private.user.id pour le dialogue. Pour plus d'informations, voir Variables d'intégration.
Si vos clients doivent se connecter avant de démarrer une session de discussion Web, vous pouvez utiliser l'ID utilisateur authentifié comme valeur de la revendication sub lorsque vous créez le jeton JWT. Etant donné que l'intégration
de discussion Web valide le JWT et utilise la revendication sub pour définir l'ID utilisateur, votre assistant peut désormais s'appuyer sur system_integrations.channel.private.user.id dans les actions et integrations.channel.private.user.id dans la boîte de dialogue pour sécuriser le contrôle d'accès aux fonctions qui requièrent une autorisation.
Une fois que vous avez spécifié le jeton JWT pour la discussion Web, vous ne pouvez pas passer à un jeton JWT avec une réclamation sub différente pendant la session. Si vous devez ajouter des informations de connexion authentifiées
au milieu d'une session, vous pouvez les stocker dans le contenu de l'utilisateur à la place. Pour obtenir un exemple de cette procédure, voir Tutoriel: Authentification d'un utilisateur au milieu d'une session.
Facturation et confidentialité
Pour les plans basés sur l'utilisateur, l'identifiant de l'utilisateur est utilisé à des fins de facturation. (Vous ne pouvez pas utiliser la méthode d'instance updateUserID() pour définir l'ID utilisateur si la sécurité de la discussion
Web est activée.) Le même ID utilisateur est également utilisé comme ID client, qui peut être utilisé pour effectuer des demandes de suppression de données utilisateur. Etant donné que l'ID client est envoyé dans une zone d'en-tête, l'ID que
vous spécifiez doit répondre aux exigences des zones d'en-tête définies dans RFC 7230.
Si vous devez vous conformer aux exigences du RGPD, vous devrez peut-être stocker en permanence les ID utilisateur anonymes générés, en particulier pour les utilisateurs anonymes qui se connectent ultérieurement avec les données d'identification de l'utilisateur. Le stockage de ces ID utilisateur vous permet de supprimer ultérieurement toutes les données associées à un client individuel si vous y êtes invité.
Pour plus d'informations sur la facturation basée sur l'utilisateur, voir Présentation des plans basés sur l'utilisateur. Pour plus d'informations sur la suppression de données utilisateur, voir Etiquetage et suppression de données.
Déconnexion
Pour déconnecter un client, vous devez détruire la discussion Web.
Si vous rechargez la page lorsqu'un client se déconnecte, appelez la méthode d'instance destroySession() pour supprimer toute référence à la session en cours des cookies et du stockage du navigateur. Si vous n'appelez pas cette méthode, les informations protégées par le JWT ne sont pas en danger, mais le web chat essaiera de se connecter à la
session précédente et échouera.
Si vous n'effectuez pas de rechargement de page complète lorsqu'un client se déconnecte, appelez la méthode d'instance destroy(). La méthode destroy supprime du DOM et de la mémoire du navigateur l'instance actuelle du chat Web configurée pour l' userID actuel. Ensuite, appelez la méthode d'instance destroySession().