Suite | Beliebiger Plan |
Wenn Sie konversationsorientierten Support leisten, kann es sein, dass Benutzer eine laufende Konversation auf einem anderen Gerät oder Kanal fortsetzen möchten. Die Benutzerauthentifizierung stellt sicher, dass alle Kontaktpunkte mit dem richtigen Endbenutzer verknüpft werden. Das kann den Support durch Ihre Agenten und die Sicherheit sensibler Informationen verbessern, die in ihren Konversationen mit Endbenutzern zur Sprache kommen.
- Terminologie für die Messaging-Authentifizierung
- Überblick über die Implementierung der Messaging-Authentifizierung für Endbenutzer
- Erstellen und Teilen eines Signaturschlüssels
- Authentifizieren von Endbenutzern nur mit einer externen ID
- Einbinden von E-Mail-Identitäten in die Endbenutzer-Authentifizierung
- Auflösen von Konflikten zwischen externen IDs und E-Mail-Adressen in JWTs
Verwandter Beitrag: Überblick über die Benutzerauthentifizierung für Messaging
Terminologie für die Messaging-Authentifizierung
- JWT: Zendesk verwendet signierte JSON Web Token (JWT), um Endbenutzer für Messaging zu authentifizieren. Diese Token enthalten Informationen zur Überprüfung der Identität des jeweiligen Endbenutzers. Weitere Informationen zu JWT finden Sie unter jwt.io.
- Signaturschlüssel: Ein Signaturschlüssel wird von einem Zendesk-Administrator im Admin Center erstellt und mit einem Entwickler in Ihrem Team geteilt, der mit ihm dann das JWT signiert.
- Externe ID: Eine ID oder eine andere alphanumerische Zeichenfolge aus einem externen System, die jeden Benutzer eindeutig identifiziert. Dies ist die primäre Identifikation zur Messaging-Authentifizierung, auch wenn eine E-Mail-Adresse im JWT enthalten ist.
- Benutzername: (Optional) Der Name des mit der externen ID oder E-Mail-Adresse verknüpften Endbenutzers. Wenn Sie den Namen des Benutzers in das JWT eingeben, wird er im Arbeitsbereich für Agenten angezeigt. Diese Information kann den Agenten die Kommunikation mit Endbenutzern erleichtern.
- E-Mail-Adresse: (Optional) Die mit einem Endbenutzer verknüpfte eindeutige E-Mail-Adresse.
Überblick über die Implementierung der Messaging-Authentifizierung für Endbenutzer
Zendesk verwendet JSON Web Token (JWT) zur Authentifizierung von Messaging-Endbenutzern, da diese eine flexible und zustandslose Möglichkeit bieten, Benutzeridentitäten zu überprüfen und API-Endpunkte zu sichern.
- Die Messaging-Authentifizierung beginnt damit, dass ein Administrator einen Signaturschlüssel generiert und ihn an einen Entwickler weitergibt. Dieser verwendet den Signaturschlüssel dann, um einen Backend-Dienst zu implementieren, der bei Bedarf signierte JWTs für Benutzer erstellen kann.
- Der Backend-Dienst erstellt auf Anfrage signierte JWTs und gibt sie an die Website oder Ihre mobile App zurück. Die von diesem Dienst erstellten JWTs müssen den Endbenutzer mit einer externen ID und einer optionalen E-Mail-Adresse eindeutig identifizieren.
- Jedes Mal, wenn sich ein Benutzer anmeldet, muss Ihre Website oder App eine entsprechende Login-API für Web Widgets und Mobile SDKs aufrufen. Dabei wird das JWT an Zendesk übergeben, um die vom Benutzer angegebene Identität zu überprüfen.
Weitere Informationen für die Entwickler Ihres Teams finden Sie unter Enabling authenticated visitors for messaging with Zendesk SDKs (Englisch) sowie im folgenden Video:
Authentifizieren von Endbenutzern in Web Messaging (17:22)
Erstellen und Teilen eines Signaturschlüssels
Signaturschlüssel werden von Entwicklern verwendet, um JWTs für Endbenutzer zu erstellen. Signaturschlüssel können nur von einem Administrator erstellt werden. Sie können maximal 10 Schlüssel erstellen. Wenn Sie Ihr Limit von 10 Schlüsseln erreicht haben, werden Sie beim Versuch, einen weiteren Schlüssel zu erstellen, aufgefordert, einen ungenutzten Schlüssel zu löschen.
- Klicken Sie in der Seitenleiste des Admin Centers auf
Konto und dann auf Sicherheit > Authentifizierung für Endbenutzer.
- Klicken Sie auf die Registerkarte Messaging und dann auf Schlüssel erstellen.
Wenn Sie Ihren ersten Schlüssel erstellen, wird die Schaltfläche Schlüssel erstellen unten auf der Seite angezeigt. Andernfalls erscheint sie in der oberen rechten Ecke.
- Geben Sie einen Namen für den Schlüssel ein und klicken Sie auf Weiter.
- Klicken Sie bei der Aufforderung auf Kopieren, um den geteilten Schlüssel zu kopieren.
Der Schlüssel wird gespeichert und automatisch mit einer ID versehen. Die ID eines Schlüssels ist in der Registerkarte „Messaging“ der Endbenutzer-Authentifizierungsseite aufgelistet.
- Senden Sie die Schlüssel-ID und die Kopie des geteilten Schlüssels vertraulich an Ihren Entwickler.
- Klicken Sie auf Schlüssel für immer ausblenden.
Authentifizieren von Endbenutzern nur mit einer externen ID
Für die Endbenutzer-Authentifizierung müssen Sie in den JWTs, die Sie an Benutzer ausgeben, eine externe ID bereitstellen. Zendesk verwendet die in einem JWT enthaltene externe ID als primäre ID für die Authentifizierung von Messaging-Benutzern. Bei der Benutzerauthentifizierung löst Zendesk zuerst einen vorhandenen Benutzer mit der externen ID auf. Eine im JWT enthaltene E-Mail-Adresse wird nur dann zur Auflösung der Benutzeridentität verwendet, wenn kein Benutzer mit der angegebenen externen ID vorhanden ist.
Signieren von JWTs nur mit einer externen ID
- external_id: (Erforderlich) Alphanumerische Zeichenfolge, anhand derer jeder Benutzer eindeutig identifiziert werden kann. Siehe Auswählen der externen ID für an Benutzer ausgegebene JWTs.
-
scope: (Erforderlich) Zugriffsbereich des Anrufers. Der einzige zulässige Wert ist
user
. - name: (Optional) Name des Benutzers. Wenn die JWT-Payload den Benutzernamen enthält, kann Zendesk diesen im Arbeitsbereich für Agenten anzeigen, sodass Ihre Agenten persönlicheren Support leisten können.
{
"external_id": "12345678",
"scope": "user",
"name": "Jane Soap"
}
Auswählen der externen ID für an Benutzer ausgegebene JWTs
- Eine externe ID muss eine alphanumerische Zeichenfolge sein.
- Externe IDs können maximal 255 Zeichen lang sein.
- Die externe ID eines Benutzers muss auf Kontoebene eindeutig sein.
Wenn Ihr Konto mehrere Marken umfasst, müssen externe IDs über alle Marken hinweg eindeutig sein.
- Die externe ID eines Benutzers sollte sich niemals ändern.
- Einem Benutzer kann jeweils nur eine externe ID zugewiesen sein.
Als externe ID eignen sich beispielsweise beim Erstkontakt vergebene inkrementelle oder randomisierte IDs (z. B. usr_12345) oder – bei Konten mit mehreren Marken – inkrementelle oder randomisierte IDs in Kombination mit einer Markenkennung (z. B. marken1_a8dedg).
E-Mail-Adressen oder Telefonnummern sollten nicht verwendet werden, weil sich diese im Laufe der Zeit ändern können und viele Benutzer mehrere Adressen oder Nummern haben. Auch die Namen der Benutzer eignen sich nicht als ID, da sie unter Umständen nicht eindeutig sind.
Einbinden von E-Mail-Identitäten in die Endbenutzer-Authentifizierung
- Authentifizierte Benutzer werden anhand signierter JWTs authentifiziert.
Die Verwendung von JWTs bietet Sicherheit, da der Inhalt eines signierten JWTs vom Endbenutzer nicht manipuliert werden kann. Wenn Sie Angriffe mit falscher Identität zuverlässig unterbinden möchten, sollten Sie E-Mail-Identitäten auf authentifizierte Endbenutzer beschränken. Diese Konfiguration bietet die höchste Sicherheit und wird bei neuen Zendesk-Konten standardmäßig verwendet.
- Nicht authentifizierte Benutzer sind Endbenutzer, die bei der Aufforderung eines Zendesk-Bots eine E-Mail-Adresse angeben.
Beachten Sie, dass bei der Verwendung von E-Mail-Identitäten für nicht authentifizierte Benutzer die Gefahr besteht, dass sich Personen als jemand anderes ausgeben, indem sie eine E-Mail-Adresse eingeben, die ihnen nicht gehört.
Das folgende Flussdiagramm zeigt, wie E-Mail-Identitäten in Ihrer Messaging-Authentifizierung verwendet werden können:
Konfigurieren von E-Mail-Identitäten
Benutzer des Web Widgets oder der mobilen Apps können in einem Formular oder auf Anfrage des AI Agent ihre E-Mail-Adresse angeben. In diesem Szenario könnte sich ein böswilliger Benutzer ganz einfach als eine andere Person ausgeben, indem er deren E-Mail-Adresse eingibt. Eine sicherere Möglichkeit, Benutzern eine E-Mail-Adresse zuzuweisen, besteht darin, JWTs zu verwenden, um Benutzer mit externen IDs und E-Mail-Identitäten zu authentifizieren.
Je nach Ihren Einstellungen können Agenten in Benutzerprofilen sowohl in einem Formular erfasste als auch per JWT bereitgestellte E-Mail-Adressen sehen. Bei neuen Zendesk-Konten sind E-Mail-Identitäten eingeschaltet und so konfiguriert, dass nur verifizierte E-Mail-Adressen verwendet werden. Dies ist die sicherste Option. Ältere Konten sind so konfiguriert, dass sowohl verifizierte als auch nicht verifizierte E-Mail-Adressen verwendet werden.
- Klicken Sie in der Seitenleiste des Admin Centers auf
Kanäle und dann auf Messaging und Social Media > Messaging.
- Klicken Sie auf Einstellungen verwalten.
- Klicken Sie auf E-Mail-Identitäten und dann auf eine der folgenden Optionen:
- Nur verifizierte E-Mail-Adressen verwenden: (Standardeinstellung) E-Mail-Identitäten werden nur für Benutzer erstellt, die authentifiziert sind und eine verifizierte E-Mail-Adresse haben, die in dem für sie ausgestellten JWT enthalten ist.
- Sowohl verifizierte als auch nicht verifizierte E-Mails verwenden: Neben den E-Mail-Identitäten authentifizierter Benutzer mit verifizierten E-Mail-Adressen werden in Benutzerprofilen auch nicht verifizierte E-Mail-Adressen angezeigt, die der Benutzer in einem AI Agent-Konversationsfluss angegeben hat.
- (Nicht empfohlen) Wenn auch nicht authentifizierte Benutzer in der Lage sein sollen, verifizierte E-Mail-Adressen zu beanspruchen, wählen Sie die Option Nicht authentifizierter Benutzer kann verifizierte E-Mail-Adressen in Anspruch nehmen.
- Klicken Sie auf Einstellungen speichern.
Nur verifizierte E-Mail-Adressen verwenden
E-Mail-Identitäten werden nur für Benutzer erstellt, die authentifiziert sind und eine verifizierte E-Mail-Adresse haben, die in dem für sie ausgestellten JWT enthalten ist.
Diese Option bewirkt, dass die Agenten im Konversationsverlauf die von einem nicht authentifizierten Endbenutzer angegebene E-Mail-Adresse, aber keine mit ihm verknüpfte E-Mail-Identität sehen. Wenn ein Agent eine Folge-E-Mail an einen nicht authentifizierten Benutzer senden möchte, muss er die E-Mail-Identität dem betreffenden Benutzerdatensatz manuell hinzufügen.
Verifizierte und nicht verifizierte E-Mail-Adressen verwenden
Neben den E-Mail-Identitäten authentifizierter Benutzer mit verifizierten E-Mail-Adressen werden in Benutzerprofilen auch nicht verifizierte E-Mail-Adressen angezeigt, die der Benutzer in einem AI Agent-Konversationsfluss angegeben hat.
Diese Option ist weniger sicher, da Angriffe durch böswillige Benutzer mit falscher Identität nicht ausgeschlossen werden können. Die Agenten können aber im Benutzerprofil erkennen, ob eine E-Mail-Adresse verifiziert ist. Unbestätigte E-Mail-Adressen sind im Arbeitsbereich für Agenten klar als solche gekennzeichnet. Agenten können angewiesen werden, die Identität der Endbenutzer bei eventuell notwendigen Folge-E-Mails anhand von Sicherheitsfragen zu überprüfen.
Reihenfolge der Ereignisse | Ereignis | Erstellte E-Mail-Identität |
---|---|---|
1 | Ein nicht authentifizierter Benutzer gibt in einem Formular eine E-Mail-Adresse an. Beispiel: alice@beispiel.org | Zendesk erstellt einen neuen, nicht authentifizierten Benutzer (ID: 12345) mit der unbestätigten E-Mail-Identität (alice@beispiel.org). |
2 | Für einen authentifizierten Benutzer wird ein JWT mit den folgenden Claims ausgestellt:
|
Zendesk erstellt einen neuen, authentifizierten Benutzer (ID: 22345) mit einer bestätigten E-Mail-Identität (alice@beispiel.org). Dem nicht authentifizierten Benutzer (ID: 12345) wird die unbestätigte E-Mail-Identität entzogen, weil sie durch eine verifizierte Identität ersetzt wurde. |
Nicht authentifizierten Benutzern erlauben, bestätigte E-Mail-Adressen zu beanspruchen (nicht empfohlen)
Im Gegensatz zu den anderen E-Mail-Identitätsoptionen erlaubt diese Einstellung Benutzern, die Identität authentifizierter Benutzer anzunehmen, indem sie auf Anfrage einfach deren E-Mail-Adresse eingeben. In diesem Fall haben bestätigte E-Mail-Adressen nicht Vorrang vor unbestätigten E-Mail-Adressen.
Diese Option ist die unsicherste und für Angriffe mit falscher Identität anfälligste Variante. Trotzdem können aufmerksame Agenten auch in diesem Szenario potenzielle Betrüger daran erkennen, dass ihr Benutzerprofil und ihre Nachrichten nicht mit dem grünen Häkchen versehen sind, das authentifizierte Benutzer kennzeichnet.
Wenn Sie diese Option wählen, ist der Bestätigungsstatus einer über Messaging-Kanäle erfassten E-Mail-Identität nicht mehr verlässlich, da der E-Mail-Status eines authentifizierten Benutzers von einem Betrüger übernommen und in einer späteren Messaging-Interaktion verwendet werden kann. Das bedeutet, dass Angriffe mit falscher Identität eher erfolgreich sind, da die Agenten nur begrenzte Möglichkeiten haben, die Identität des Endbenutzers zu überprüfen. Allerdings haben verifizierte E-Mail-Identitäten weiterhin Vorrang vor nicht verifizierten E-Mail-Identitäten, sodass die E-Mail-Identität aus dem Benutzerdatensatz des Betrügers entfernt wird.
Ausstellen von JWTs mit E-Mail-Adressen
- external_id: (Erforderlich) Alphanumerische Zeichenfolge, anhand derer jeder Benutzer eindeutig identifiziert werden kann. Siehe Auswählen der externen ID für an Benutzer ausgegebene JWTs.
-
scope: (Erforderlich) Zugriffsbereich des Anrufers. Der einzige zulässige Wert ist
user
. - name: (Optional) Name des Benutzers. Wenn die JWT-Payload den Benutzernamen enthält, kann Zendesk diesen im Arbeitsbereich für Agenten anzeigen, sodass Ihre Agenten persönlicheren Support leisten können.
-
email: (Erforderlich) E-Mail-Adresse des angemeldeten Benutzers. Muss dem Benutzer eindeutig zuzuordnen sein.
Setzen Sie die E-Mail-Adresse im Arbeitsbereich für Agenten auf die primäre E-Mail-Adresse des Benutzers. Sekundäre E-Mail-Adressen können nicht in JWTs aufgenommen werden.
-
email_verified: (Optional) Gibt an, ob der betreffende Endbenutzer als Inhaber der E-Mail-Adresse bestätigt wurde. Wenn Endbenutzer über verifizierte E-Mail-Identitäten verfügen sollen, müssen die von Ihnen ausgegebenen JWTs die Claims
email
und"email_verified": true
enthalten.
{
"external_id": "12345678",
"email": "janes@soap.com",
"email_verified": true,
"name": "Jane Soap",
"scope": "user"
}
Auflösen von Konflikten zwischen externen IDs und E-Mail-Adressen in JWTs
Zendesk verwendet die externe ID als primäre Kennung und die E-Mail-Adresse nur, wenn keine Übereinstimmung mit der externen ID gefunden wird.
Planen Sie Ihre Messaging-Authentifizierung unter dem Aspekt der Konfliktvermeidung. Wählen Sie zum Beispiel Ihre externen IDs und E-Mail-Einstellungen in Zendesk so, dass keine Konflikte auftreten können. Wenn die in einem JWT angegebene E-Mail-Adresse jedoch bereits mit einer anderen externen ID verknüpft ist, wird das JWT von Zendesk zurückgewiesen und der Anmeldeversuch des Endbenutzers erfolglos abgebrochen. In diesem Fall wird die Konversation mit dem Benutzer in einem nicht authentifizierten Zustand eingeleitet.
- Aktualisieren Sie das JWT mit einem anderen
external_id
-Wert oder einer anderenemail
-Adresse.ODER
- Löschen Sie den Benutzer mit der betreffenden
external_id
, damit diese von einem anderen Endbenutzer verwendet werden kann. Weitere Informationen finden Sie in der Sunshine Conversations API-Dokumentation unter „Delete User“ (Englisch).
167 Kommentare
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
Anmelden, um einen Kommentar zu hinterlassen.