Suite | Toutes les éditions |
Si vous fournissez une assistance conversationnelle, il est possible que les utilisateurs veuillent avoir une conversation sur plusieurs appareils et plusieurs canaux. En authentifiant les utilisateurs finaux, vous pouvez vous assurer que tous les points de contact sont associés au bon utilisateur final. Cela peut améliorer la qualité de l’assistance que fournissent vos agents et renforcer la sécurité des informations sensibles qui peuvent être révélées lors des interactions d’assistance.
- Terminologie de l’authentification dans la messagerie
- Aperçu de l’implémentation de l’authentification dans la messagerie pour les utilisateurs finaux
- Création et partage d’une clé de connexion
- Authentification des utilisateurs finaux avec un ID externe uniquement
- Incorporation des identités d’adresses e-mail à l’authentification de vos utilisateurs
- Résolution des conflits entre les ID externes et les e-mails dans les JWT
Article connexe : Authentification des utilisateurs dans la messagerie
Terminologie de l’authentification dans la messagerie
- JWT : Zendesk utilise des tokens Web JSON (JWT) signés pour l’authentification des utilisateurs finaux dans la messagerie. Ces tokens contiennent des détails qui vérifient l’identité des utilisateurs finaux. Pour en savoir plus sur JWT, consultez jwt.io.
- Clé de connexion : une clé de connexion est créée par un administrateur Zendesk dans le Centre d’administration et partagée avec un développeur dans votre équipe qui l’utilise alors pour signer le token Web JSON (JWT) en fonction des besoins.
- ID externe : une chaîne alphanumérique, comme un ID provenant d’un système externe, qui est unique à chaque utilisateur. C’est l’identifiant principal pour l’authentification dans la messagerie, même quand une adresse e-mail est incluse au JWT.
- Nom d’utilisateur : (facultatif) le nom de l’utilisateur final associé à l’ID externe ou l’adresse e-mail. Si vous incluez le nom d’utilisateur au JWT, il s’affiche dans l’espace de travail d’agent. Ces informations peuvent aider les agents à communiquer avec les utilisateurs finaux.
- E-mail : (facultatif) l’adresse e-mail unique associée à un utilisateur final.
Aperçu de l’implémentation de l’authentification dans la messagerie pour les utilisateurs finaux
Zendesk utilise les tokens Web JSON (JWT) pour authentifier les utilisateurs de la messagerie, ce qui fournit un moyen souple de vérifier l’identité des utilisateurs et de sécuriser les points de terminaison des API.
- Pour commencer le processus d’authentification dans la messagerie, un administrateur doit générer une clé de connexion et la fournir à un développeur. Ensuite, le développeur utilise cette clé de connexion pour implémenter un service de backend capable de créer des JWT pour les utilisateurs.
- Quand nécessaire, ce service de backend crée et renvoie des JWT signés à votre site Web ou votre application mobile. Les JWT créés par ce service doivent inclure un ID externe unique et, facultativement, une adresse e-mail pour permettre l’identification de l’utilisateur final.
- Chaque fois qu’un utilisateur est connecté, votre site Web ou votre application doivent appeler une API de connexion équivalente, disponible pour le Web Widget et les Mobile SDK, et à ce moment-là, le JWT est transféré à Zendesk pour que le système vérifie l’identité prétendue de l’utilisateur.
Pour plus d’informations, en particulier pour les développeurs de votre équipe, consultez Enabling authenticated visitors for messaging with Zendesk SDKs ou regardez cette vidéo :
Authentification des utilisateurs finaux dans la messagerie Web (17:22)
Création et partage d’une clé de connexion
Les clés de connexion sont utilisées par les développeurs pour créer des JWT pour les utilisateurs finaux. Vous devez être administrateur pour créer une clé de connexion. Vous pouvez créer un maximum de 10 clés. Si vous essayez de créer une nouvelle clé après avoir atteint cette limite, vous êtes invité à supprimer les clés inutilisées.
- Dans le Centre d’administration, cliquez sur Compte (
) dans la barre latérale, puis sélectionnez Sécurité > Authentification des utilisateurs finaux.
- Cliquez sur l’onglet Messagerie, puis sur Créer une clé.
Si vous créez votre première clé, Créer une clé s’affiche en bas de la page et sinon, en haut à droite de la page.
- Saisissez un nom pour la clé et cliquez sur Suiv.
- À l’invite, cliquez sur Copier pour copier le secret partagé.
La clé est enregistrée et un ID est affecté automatiquement. Vous pouvez trouver l’ID d’une clé dans la liste des clés de l’onglet Messagerie à la page d’authentification des utilisateurs finaux.
- Envoyez l’ID de la clé et le secret partagé que vous avez copié à votre développeur de façon confidentielle.
- Cliquez sur Masquer la clé définitivement.
Authentification des utilisateurs finaux avec un ID externe uniquement
Pour authentifier un utilisateur final, vous devez fournir un ID externe dans les JWT que vous émettez pour les utilisateurs. Zendesk utilise l’ID externe fourni dans un JWT comme identifiant principal pour l’authentification des utilisateurs dans la messagerie. Lors de l’authentification d’un utilisateur, Zendesk commence par comparer un utilisateur existant à l’ID externe. Si une adresse e-mail est incluse dans le JWT, elle est utilisée pour vérifier l’identité de l’utilisateur uniquement lorsqu’aucun utilisateur existant ne correspond à l’ID externe.
Signature des JWT avec un ID externe uniquement
- external_id : (obligatoire) une chaîne alphanumérique unique qui peut être utilisée pour identifier chaque utilisateur. Consultez Sélection de l’ID externe à utiliser dans les JWT émis pour les utilisateurs.
-
scope : (obligatoire) la portée d’accès de l’appelant. La seule valeur valide est
user
. - name : (facultatif) le nom de l’utilisateur. L’inclusion du nom à la charge utile du JWT permet à Zendesk d’afficher le nom de l’utilisateur dans l’espace de travail d’agent et aide vos agents à fournir une assistance plus personnalisée.
{
"external_id": "12345678",
"scope": "user",
"name": "Jane Soap"
}
Sélection de l’ID externe à utiliser dans les JWT émis pour les utilisateurs
- Un ID externe doit être une chaîne alphanumérique.
- Un ID externe ne doit pas dépasser 255 caractères.
- L’ID externe de chaque utilisateur doit être unique au niveau du compte.
Si votre compte a plusieurs marques, les ID externes doivent être uniques dans l’ensemble des marques.
- L’ID externe d’un utilisateur ne doit jamais changer.
- Un seul ID externe peut être affecté à chaque utilisateur.
Voici quelques exemples de bons ID externes : un ID incrémental ou aléatoire affecté au moment du contact initial (exemple : usr_12345) ou, dans le cas de plusieurs marques, un ID spécifique à la marque associé à un ID incrémental ou aléatoire affecté (exemple : marque1_a8dedg).
Évitez d’utiliser l’adresse e-mail et le numéro de téléphone de l’utilisateur, car ils peuvent changer et les utilisateurs peuvent avoir plusieurs valeurs. Évitez aussi d’utiliser le nom de l’utilisateur, car il peut ne pas être unique.
Incorporation des identités d’adresses e-mail à l’authentification de vos utilisateurs
- Les utilisateurs authentifiés le sont via des JWT signés.
L’utilisation de JWT signés fournit une approche sûre et fiable, car les utilisateurs finaux ne peuvent pas falsifier leur contenu. Si les attaques d’usurpation d’identité vous préoccupent, associez les identités d’adresse e-mail aux utilisateurs finaux authentifiés uniquement. C’est l’option la plus sécurisée et la configuration par défaut pour tous les nouveaux comptes Zendesk.
- Les utilisateurs non authentifiés sont les utilisateurs finaux qui fournissent une adresse e-mail à l’invite d’un bot Zendesk.
Attention, si vous autorisez l’utilisation des identités d’adresses e-mail pour les utilisateurs non authentifiés, vous vous exposez à ce que des utilisateurs se fassent passer pour d’autres en fournissant une adresse e-mail qui ne leur appartient pas.
Le graphique suivant montre comment les identités d’adresses e-mail peuvent être utilisées dans votre processus d’authentification pour la messagerie :
Configuration des identités d’adresses e-mail
Avec le Web Widget ou les applications mobiles, l’utilisateur peut fournir son adresse e-mail en réponse à un formulaire ou un prompt de l’agent IA. Dans ce cas, rien n’empêche un utilisateur malveillant de fournir l’adresse e-mail de quelqu’un d’autre pour essayer de se faire passer pour cette personne. Cependant, l’utilisation des JWT pour authentifier les utilisateurs avec les ID externes ET les identités d’adresses e-mail est une façon plus sûre d’affecter des adresses e-mail aux utilisateurs.
En fonction de vos paramètres, les agents peuvent voir les adresses e-mail recueillies et celles fournies par les JWT dans les profils d’utilisateur. Avec les nouveaux comptes Zendesk, les identités d’adresses e-mail sont activées et configurées de façon à n’utiliser que des adresses e-mail vérifiées. C’est l’option la plus sécurisée. Les comptes plus anciens sont configurés de façon à utiliser les adresses e-mail vérifiées et non vérifiées.
- Dans le Centre d’administration, cliquez sur l’icône Canaux (
) dans la barre latérale, puis sélectionnez Messagerie et réseaux sociaux > Messagerie.
- Cliquez sur Gérer les paramètres.
- Cliquez sur Identités d’adresses e-mail, puis sélectionnez l’une des options ci-dessous :
- Utiliser uniquement des adresses e-mail vérifiées : (par défaut) les identités d’adresse e-mail sont créées uniquement pour les utilisateurs qui sont authentifiés et ont une adresse e-mail vérifiée incluse dans leur JWT émis.
- Utiliser des adresses e-mail vérifiées et non vérifiées : en plus des identités d’adresses e-mail pour les utilisateurs authentifiés avec des adresses e-mail vérifiées visibles dans les profils d’utilisateur, les adresses e-mail non vérifiées fournies par les utilisateurs via les workflows d’agent IA sont également ajoutées à leurs profils d’utilisateur.
- (déconseillé) Si vous voulez que tous les utilisateurs, même les utilisateurs non authentifiés, puissent revendiquer les adresses e-mail vérifiées, sélectionnez Un utilisateur non authentifié peut revendiquer des adresses e-mail vérifiées.
- Cliquez sur Enregistrer les paramètres.
Utiliser uniquement des adresses e-mail vérifiées
Les identités d’adresse e-mail sont créées uniquement pour les utilisateurs qui sont authentifiés et ont une adresse e-mail vérifiée incluse dans leur JWT émis.
Avec cette option, l’agent voit l’adresse e-mail fournie par l’utilisateur non authentifié dans l’historique de conversations, mais il ne voit pas d’identité d’adresse e-mail associée à l’utilisateur. Si un agent a besoin d’envoyer un e-mail de suivi à un utilisateur non authentifié, il doit ajouter l’identité d’adresse e-mail à cet enregistrement d’utilisateur manuellement.
Utiliser des adresses e-mail vérifiées et non vérifiées
en plus des identités d’adresses e-mail pour les utilisateurs authentifiés avec des adresses e-mail vérifiées visibles dans les profils d’utilisateur, les adresses e-mail non vérifiées fournies par les utilisateurs via les workflows d’agent IA sont également ajoutées à leurs profils d’utilisateur.
Cette option est moins sûre, car des utilisateurs malveillants pourraient encore essayer de commettre des attaques d’usurpation d’identité. Cependant, les agents peuvent inspecter les profils d’utilisateur pour déterminer si une adresse e-mail est vérifiée. Les adresses e-mail non vérifiées sont clairement indiquées dans l’espace de travail d’agent. Quand les agents ont besoin d’envoyer des e-mails de suivi, il peut leur être demandé de vérifier l’utilisateur final à l’aide de questions de sécurité afin d’accroître la chance que l’utilisateur final soit bien qui il prétend être,
Ordre des événements | Événement | Identité d’adresse e-mail résultante |
---|---|---|
1 | Un utilisateur non authentifié fournit une adresse e-mail recueillie dans un formulaire, par exemple, alice@exemple.org. | Zendesk crée un nouvel utilisateur non authentifié (id : 12345) avec l’identité d’adresse e-mail non vérifiée (alice@exemple.org). |
2 | Un JWT est émis pour un utilisateur authentifié et contient les informations suivantes :
|
Zendesk crée un nouvel utilisateur authentifié (id : 22345) avec une identité d’adresse e-mail vérifiée (alice@exemple.org). L’utilisateur non authentifié (id : 12345) perd son identité d’adresse e-mail non vérifiée, car elle a été remplacée par une identité vérifiée. |
Autoriser les utilisateurs non authentifiés à revendiquer des adresses e-mail vérifiées (déconseillé)
Contrairement aux autres options d’identité d’adresse e-mail, ce paramètre permet aux utilisateurs d’adopter l’identité d’un utilisateur authentifié en fournissant simplement l’adresse e-mail de cet utilisateur quand ils y sont invités. Quand cette option est sélectionnée, les adresses e-mail vérifiées ne remplacent pas les adresses e-mail non vérifiées.
Cette option est la moins sûre et est plus vulnérable aux attaques d’usurpation d’identité. Cependant, les agents consciencieux peuvent malgré tout détecter un imposteur en cherchant la coche verte dans le profil de l’utilisateur et en regard de ses messages, qui indique si l’utilisateur est authentifié.
Quand vous sélectionnez cette option, le statut de vérification des identités d’adresses e-mail recueillies à partir des canaux de messagerie n’est plus fiable, car un imposteur peut arriver après l’authentification d’un utilisateur et prendre possession de son statut d’adresse e-mail dans une interaction de messagerie ultérieure. Cela signifie que les attaques d’usurpation d’identité ont plus de chances de réussir et les agents n’ont que de moyens limités de savoir si l’utilisateur final est vraiment qui il prétend être. Cependant, les identités d’adresses e-mail vérifiées ont toujours préséance sur les identités d’adresses e-mail non vérifiées, et l’identité d’adresse e-mail est supprimée de l’enregistrement d’utilisateur de l’imposteur.
Émission de JWT avec les adresses e-mail
- external_id : (obligatoire) une chaîne alphanumérique unique qui peut être utilisée pour identifier chaque utilisateur. Consultez Sélection de l’ID externe à utiliser dans les JWT émis pour les utilisateurs.
-
scope : (obligatoire) la portée d’accès de l’appelant. La seule valeur valide est
user
. - name : (facultatif) le nom de l’utilisateur. L’inclusion du nom à la charge utile du JWT permet à Zendesk d’afficher le nom de l’utilisateur dans l’espace de travail d’agent et aide vos agents à fournir une assistance plus personnalisée.
-
email : (obligatoire) adresse e-mail de l’utilisateur en cours de connexion. Elle doit être unique à l’utilisateur.
Configurez l’adresse e-mail pour qu’elle corresponde à l’adresse e-mail principale de l’utilisateur dans l’espace de travail d’agent. L’inclusion d’adresses e-mail secondaires aux JWT n’est pas prise en charge.
-
email_verified : (facultatif) indique si l’utilisateur final en question a prouvé qu’il est propriétaire de l’adresse e-mail. Si vous voulez que les utilisateurs finaux aient des identités d’adresses e-mail vérifiées, les JWT que vous émettez doivent contenir les revendications
email
ET"email_verified": true
.
{
"external_id": "12345678",
"email": "janes@soap.com",
"email_verified": true,
"name": "Jane Soap",
"scope": "user"
}
Résolution des conflits entre les ID externes et les e-mails dans les JWT
Zendesk utilise l’ID externe comme identifiant principal et les adresses e-mail ne sont utilisées que si aucune correspondance n’est trouvée pour l’ID externe.
Il est préférable d’implémenter l’authentification dans la messagerie en essayant d’éviter les conflits. Par exemple, choisissez vos ID externes et paramètres d’e-mail dans Zendesk pour éviter tout conflit. Mais, si l’adresse e-mail présentée dans un JWT est déjà associée à un autre ID externe, Zendesk refuse le JWT et la tentative de connexion de l’utilisateur final échoue. Dans ce cas, la conversation commence avec l’utilisateur dans un statut non authentifié.
- Mettez le JWT à jour pour qu’il utilise une autre valeur
external_id
ou adresseemail
.OU
- Supprimez l’utilisateur avec la valeur
external_id
à l’origine du conflit, ce qui la libère et permet à un autre utilisateur de s’en servir. Consultez la section sur la suppression d’un utilisateur dans l’API Sunshine Conversations.
167 commentaire
Ivan Genchev
Hello Everyone,
I would like to share our experience with authenticating users and the disappointment following.
We are supporting tens of brands and authenticating users who log in in our websites and open a chat (messaging) via the widget. Each of our brands has a unique set of numbers as External ID. Users can register in any of our brands with the same email and they will be generated a different External ID for each Brand. This information is provided to Zendesk and a user is created in Support.
Sounds simple enough, however, once a user registers in more than 1 of our brands, they are forbidden by Zendesk to initiate a chat in the 2nd, 3rd, or any other brand after the first registration. This is due to the 409 error. The “solution” in the article is to manually or via API, remove the original user so that they can be registered anew and open a chat in the new brand, but this does not help as this would need to happen each time the user tries to open a chat in the original brand or in a new one.
For some reason, Sunshine Conversations cannot comprehend the same Email, being related to more than one External ID (or, since the External ID is the main identifier, more than 1 External ID cannot be related to the same Email). Which could make sense in some cases, but not for a platform that offers Multi-Brand usage.
“Solution” 1: To not pass our external IDs as External_ID, but pass the email as an External_ID. In this case, no matter where the user registers/logins, we will pass the same External_ID to Zendesk and there will be no conflict. Sounds good, the first registration is successful. The second registration (to a 2nd Brand) is also successful. However, users can view the history of the first brand in the chat of the second brand. This is absolutely baffling. Why would this even be a feature, why would a user need the history of Brand1 in the chat of Brand2? This can be a huge breach of trust in the customer. The answer to this question is that Sunshine Conversations just works like that..
“Solution” 2: What we are currently doing: Authenticate users as usual, and create a fallback for when a user encounters the 409 error (registered in more than 1 brand and initiates a chat). The fallback authenticates the user with the External ID, however instead of using the same Email, it creates a new email for them which looks like this: External_ID+Email (ex. 123456789+example@email.com). This is made so that each new registration in another brand will have a different email, so that Zendesk can allow them to be registered anew, instead of blocking them.
- So now if 1 user, with the email example@email.com registers in 3 Brands, he will have 3 separate users in Zendesk:
One as example@email.com , Second as 123456789+example@email.com and Third as 987654321+example@email.com .
- Great, at least they can initiate chats now. The issue? Only the original user can be used for email communication, as he is the only one with an actually legit email. So any email sent from/to Brand2 and Brand3 will go to the user for Brand1. Any chat communication will be saved in the interaction history for the respective user, but emails will never be seen as they should.
- So if the user comes in Brand3 and says “check the email communication”, you cannot simply view the Interaction History, you have to open an entirely separate user and check the email communication there.
- Sometimes, the original email example@email.com and an email such as 123456789+example@email.com will be added to the same user. In many of these cases, the 123456789+example@email.com is marked as Primary in the user's Zendesk profile. For another unknown reason, Zendesk does not allow us to send emails to the Secondary email, and it is only used for identification. So even if you type out example@email.com in the “Requester field”, it will recognize the user and automatically change the Requester to the primary email 123456789+example@email.com . This is obviously a non-existent email, so the sending will fail.
The only solution to this is to go inside the profile of the user, mark the example@email.com as verified and then change it to primary. Only then can an agent send an email to this customer.
The other “Solution” would be to not authenticate users at all but you can imagine how that is not exactly a solution.
After thorough communication with Zendesk Support, it seems this is our only workaround which includes all these pain points that force agents to do unnecessary manual work.
To us this seems as a major flaw for a platform that support multiple brands and I believe a solution to this should be of highest priority. At this point, the platform is basically punishing the customer for having a registration in more than 1 brand with the same email, and any workaround feels unpolished and irritating to agents for the manual steps they need to take.
I look forward to any feedback or other possible solutions that you may offer.
Thank you.
3
Anthony Plaza
Hello everyone, specific question.
Was the email authentication issue resolved?
I send the email, external_id, and other information in my JWT, but I've read all the messages since 2022, and it's April 2025, and I'm not sure whether to add the "email_verified" field since they say it duplicates the number of users.
Please confirm if this new feature is working correctly.
0
John Witt
8329079355674 I have found that Zendesk requires an email_verified status to see non-public articles. I send the userid of the current user ($AJAX user.me) as the external_id, email_verified true, and the email to create the token. The problem with this is it will always create a new user since external_id doesn't exists, so one workaround is to prepopulate every user's external_id with their user_id before testing Messaging. I prefer make.com and powerautomate, but I assume any integration tool or ZIS could do it. Worst case is you have two users and need to merge.
0
Pierre
Thanks 1263169242090
Just to make sure I understand it correctly.
Can I pre-populate the external id in zendesk or do I need to do this using an API?
My assumption is that the bot can automatically recommend articles based on the questions the end user asks. Or do we still need to pre-configure recommended articles for certain questions within the bot?
Thanks again for your help.
0
John Witt
My articles were private, and the only way around this is to use email, external id, and email_verified=true. However, if you don't pre-populate the external id before doing this, it will create a new user (you'll need to merge or delete the other one).
0
Pierre
1263169242090, thanks for you response.
We did get he web widget to work by using the backend service. We use the JWT token as described, but still the bot does not return any useful articles. Only when we make our articles public it works as it should.
Is there a setting somewhere in Zendesk that will allow the bot to return articles without us having to make all our articles public facing?
0
John Witt
8329079355674 To properly encode, you need the algorithm of H256, the correct kid (from Account;end user security), and type of JWT. The payload really just needs scope=user and external_id, but I use email, name, and verified.
I recommend using one of the JWT encoder/decoders and hardcode the value into the ZE call until you get it working. You might be missing a parm to encode in your encoder. I found I was getting 401 Login issues as I was using the wrong kid to encode.
0
Pierre
Hi,
We have build our backend service that will generate the JWT tokens. We have followed the instructions as per the steps in this document.
We generate a JWT token with the required claims and then use the token in Postman as a Bearer token to test it. But we keep on receiving the status code 401.
Is there anything else we should have configured on Zendesk apart from the Signing key in the Messaging section?
Or should the issuer and audience properties of the JWT token be specific values?
0
John Witt
1265194314089 Did you ever get an answer to this? I am seeing the same. It's almost like I want to add more logic - get the user via email, and if they don't have an external id, then create one using their user id, then send the JWT request. I think the issue is it sees there' no external_id, but can't use the email since it's already in use, and doesn't just assume the one with the correct email address is correct.
0
Tamir Bashkin
Hey, check out this app: https://www.zendesk.com/marketplace/apps/support/1066145/messaging-and-help-center-authentication . It helps authenticate Help Center users on the messaging widget. Highly recommended! :)
0
Se connecter pour laisser un commentaire.