Suite | Cualquier plan |
Si se proporciona soporte de conversación, es posible que los usuarios intenten tener una conversación en distintos dispositivos y canales. Al autenticar a los usuarios finales, podrá asegurarse de que todos los puntos de contacto estén asociados con el usuario final correcto. Esto puede aumentar la calidad del soporte que ofrecen los agentes y proteger mejor la información confidencial que a veces surge mientras los agentes atienden a los usuarios finales.
- Terminología para la autenticación de mensajería
- Información general sobre la implementación de la autenticación de mensajería para los usuarios finales
- Crear y compartir una clave de firma
- Autenticar a los usuarios finales con una ID externa únicamente
- Incorporar las identidades de correo electrónico en la autenticación de los usuarios finales
- Resolver los conflictos entre las ID externas y los correos electrónicos en los JWT
Artículo relacionado: Comprender la autenticación de usuarios para la mensajería
Terminología para la autenticación de mensajería
- JWT: Zendesk utiliza Tokens Web JSON (JWT) firmados para autenticar a los usuarios finales para la mensajería. Estos tokens contienen detalles que verifican la identidad de los usuarios finales. Si desea más información sobre JWT, consulte jwt.io.
- Clave de firma: la clave de firma es creada por un administrador de Zendesk en el Centro de administración y compartida con un desarrollador del equipo, que la usa para firmar el JWT según sea necesario.
- ID externa: una cadena alfanumérica, como una ID de un sistema externo, que es única para cada usuario. Esta es la identificación principal para la autenticación de mensajería, incluso cuando se incluye una dirección de correo electrónico en el JWT.
- Nombre de usuario: (opcional) el nombre del usuario final asociado con la ID externa o la dirección de correo electrónico. Si se incluye el nombre del usuario en el JWT, aparecerá en el espacio de trabajo de agente. Esta información puede ayudar a los agentes a comunicarse con los usuarios finales.
- Correo electrónico: (opcional) la dirección de correo electrónico única asociada con un usuario final.
Información general sobre la implementación de la autenticación de mensajería para los usuarios finales
Zendesk utiliza tokens Web JSON (JWT) para autenticar a los usuarios finales de mensajería y con ello ofrece una manera flexible y sin estado para verificar las identidades de los usuarios y proteger los extremos de las API.
- El proceso de autenticación de mensajería comienza con un administrador que genera una clave de firma y se la proporciona a un desarrollador. A continuación, el desarrollador utiliza la clave de firma para implementar un servicio central que puede crear JWT firmados para los usuarios si lo solicitan.
- Cuando se solicita, el servicio central crea los JWT firmados y los devuelve al sitio web o la aplicación móvil. Los JWT creados por el servicio deben incluir una ID externa única y, opcionalmente, una dirección de correo electrónico para identificar al usuario final.
- Cada vez que el usuario inicia sesión, el sitio web o la aplicación tiene que llamar a una API de inicio de sesión equivalente para el Web Widget y los SDK para móviles. En ese momento, el JWT se envía a Zendesk para verificar la supuesta identidad del usuario.
Si desea más información, en particular para los desarrolladores de su equipo, consulte Enabling authenticated visitors for messaging with Zendesk SDKs o mire el siguiente video:
Autenticación de los usuarios finales en la mensajería web (17:22).
Crear y compartir una clave de firma
Los desarrolladores utilizan las claves de firma para crear JWT para los usuarios finales. Es necesario ser un administrador para crear una clave de firma. Se puede crear un máximo de 10 claves. Si intenta crear una nueva clave después de alcanzar el límite de 10, se le pedirá que borre las claves no utilizadas.
- En el Centro de administración, haga clic en
Cuenta en la barra lateral y luego seleccione Seguridad > Autenticación de usuarios finales.
- Haga clic en la pestaña Mensajería y luego en Crear clave.
Si está creando su primera clave, Crear clave aparece en la parte inferior de la página. De lo contrario, aparece en la esquina superior derecha.
- Ingrese un Nombre para la clave y luego haga clic en Siguiente.
- Cuando se le indique, haga clic en Copiar para copiar el secreto compartido.
La clave se guarda y se asigna una ID automáticamente. Las ID de las claves se encuentran en la lista de claves en la pestaña Mensajería de la página Autenticación de usuarios finales.
- Envíe la ID de la clave y el secreto compartido que copió al desarrollador de manera confidencial.
- Haga clic en Ocultar clave para siempre.
Autenticar a los usuarios finales con una ID externa únicamente
Para autenticar a un usuario final, debe poder proporcionar una ID externa en los JWT que se emiten a los usuarios. Zendesk utiliza la ID externa que se proporciona en un JWT como identificador principal para la autenticación de usuarios de mensajería. Cuando se realiza una autenticación de usuario, Zendesk primero resuelve un usuario existente con la ID externa. Si se incluye una dirección de correo electrónico junto con el JWT, esta se utiliza para resolver la identidad del usuario únicamente cuando ninguno de los usuarios existentes coincide con la ID externa.
Firma de JWT con una ID externa solamente
- external_id: (requerido) esta es la cadena alfanumérica única que se puede usar para identificar a cada usuario. Consulte Seleccionar la ID externa para usar en los JWT emitidos a los usuarios.
-
scope: (requerido) el alcance de acceso de la persona que llama. El único valor válido es
user
. - name: (opcional) el nombre del usuario. Si se incluye el nombre en la carga de JWT, Zendesk podrá mostrar el nombre del usuario en el espacio de trabajo de agente para ayudar a los agentes a proporcionar un soporte más personalizado.
{
"external_id": "12345678",
"scope": "user",
"name": "Jane Soap"
}
Seleccionar la ID externa para usar en los JWT emitidos a los usuarios
- Una ID externa debe ser una cadena alfanumérica.
- Las ID externas solo pueden tener un máximo de 255 caracteres.
- Las ID externas de los usuarios deben ser únicas en todo el ámbito de la cuenta.
Si tiene varias marcas en su cuenta, las ID externas deben ser únicas en todas las marcas.
- La ID externa de un usuario nunca puede cambiar.
- Un usuario solo puede tener asignada una ID externa.
Estos son algunos ejemplos de ID externas bien escogidas: una ID en incrementos o aleatoria que se asigna durante el contacto inicial (por ejemplo: usr_12345) o, si se tienen varias marcas, un identificador propio para la marca, combinado con una ID asignada en incrementos o aleatoria (ejemplo: marca1_a8dedg).
Evite usar la dirección de correo electrónico y el número de teléfono del usuario porque estos pueden cambiar con el paso del tiempo y los usuarios pueden tener varios valores. Asimismo, evite el nombre del usuario porque podría no ser único.
Incorporar las identidades de correo electrónico en la autenticación de los usuarios finales
- Los usuarios autenticados son usuarios que se autentican a través de JWT firmados.
El uso de JWT es un método fiable porque los usuarios finales no pueden adulterar el contenido de un JWT firmado. Si le preocupan los ataques de suplantación de identidad, debe restringir las identidades de correo electrónico a los usuarios finales autenticados. Esta es la opción más segura y la configuración predeterminada para todas las cuentas nuevas de Zendesk.
- Los usuarios no autenticados son usuarios finales que proporcionan una dirección de correo electrónico cuando el indicador de bot de Zendesk la solicita.
Tenga en cuenta que permitir el uso de identidades de correo electrónico con usuarios no autenticados puede dejarlo expuesto a personas que se hacen pasar por otros usuarios a través de un correo electrónico que no les pertenece.
El siguiente diagrama de flujo ilustra cómo las identidades de correo electrónico se pueden usar en su autenticación de mensajería:
Configuración de identidades de correo electrónico
Con el Web Widget o las aplicaciones móviles, los usuarios pueden proporcionar su dirección de correo electrónico en respuesta a un formulario o una indicación de agente IA. En los casos mencionados, no hay nada que impida a un usuario malintencionado dar la dirección de correo electrónico de otra persona con el objeto de hacerse pasar por esa persona. Sin embargo, usar los JWT para autenticar a los usuarios con ID externas e identidades de correo electrónico es una forma más fiable de asignar direcciones de correo electrónico a los usuarios.
Según la configuración que tenga, los agentes podrían ver direcciones de correo electrónico que se recogen a través de un formulario o que son proporcionadas por JWT en los perfiles de usuario. En las cuentas nuevas de Zendesk, las identidades de correo electrónico están activadas y configuradas para usar únicamente direcciones de correo electrónico verificadas, ya que es la opción más segura. Las cuentas más antiguas están configuradas para usar direcciones de correo electrónico verificadas y no verificadas.
- En el Centro de administración, haga clic en
Canales en la barra lateral y luego seleccione Mensajería y redes sociales > Mensajería.
- Haga clic en Administrar configuración.
- Haga clic en Identidades de correo electrónico y luego seleccione una de las siguientes opciones:
- Usar solo correos electrónicos verificados: (predeterminado) se crean identidades de correo electrónico solo para los usuarios que están autenticados y que cuentan con una dirección de correo electrónico verificada incluida en su JWT emitido.
- Usar correos electrónicos verificados y no verificados: en los perfiles de los usuarios se muestran las identidades de correo electrónico para los usuarios autenticados con direcciones de correo electrónico verificadas y, además, se añaden las direcciones de correo electrónico no verificadas que son proporcionadas por los usuarios a través de flujos de agentes IA.
- (No recomendado) Si desea que cualquier usuario (incluso los usuarios no autenticados) pueda usar direcciones de correo electrónico verificadas, seleccione El usuario no autenticado puede reclamar correos electrónicos verificados.
- Haga clic en Guardar configuración.
Usar solo correos electrónicos verificados
Se crean identidades de correo electrónico solo para los usuarios que están autenticados y que cuentan con una dirección de correo electrónico verificada incluida en su JWT emitido.
Con esta opción, los agentes pueden ver la dirección de correo electrónico proporcionada por los usuarios finales no autenticados en el historial de conversaciones, pero no podrán ver una identidad de correo electrónico asociada con el usuario. Si un agente necesita hacer seguimiento de un usuario no autenticado a través de correo electrónico, tendrá que agregar manualmente la identidad del usuario de correo electrónico a ese registro de usuario.
Usar correos electrónicos verificados y no verificados
En los perfiles de los usuarios se muestran las identidades de correo electrónico para los usuarios autenticados con direcciones de correo electrónico verificadas y, además, se añaden las direcciones de correo electrónico no verificadas que son proporcionadas por los usuarios a través de flujos de agentes IA.
Esta opción es menos segura porque aun así los usuarios malintencionados pueden intentar penetrar con ataques de suplantación de identidad. Sin embargo, los agentes pueden inspeccionar los perfiles de usuario final para determinar si una dirección de correo electrónico es verificada. Las direcciones de correo electrónico no verificadas se marcan claramente en el espacio de trabajo de agente. Cuando los agentes necesitan enviar correo electrónico de seguimiento, se les podría indicar que verifiquen a los usuarios finales por medio de preguntas de seguridad para tener una mayor certeza de que el usuario final es efectivamente quien dice ser.
Orden del evento | Evento | Identidad de correo electrónico resultante |
---|---|---|
1 | Un usuario no autenticado proporciona un correo electrónico recogido a través de un formulario. Por ejemplo, alicia@ejemplo.org | Zendesk crea un nuevo usuario no autenticado (id: 12345) usando la identidad de correo electrónico no verificada (alicia@ejemplo.org). |
2 | Se emite un JWT a un usuario autenticado con las siguientes declaraciones:
|
Zendesk crea un nuevo usuario autenticado (id: 22345) usando la identidad de correo electrónico verificada (alicia@ejemplo.org). El usuario no autenticado (id: 12345) pierde su identidad de correo electrónico no verificada porque es sustituida por la identidad verificada. |
Permitir que los usuarios no autenticados hagan uso de correos electrónicos verificados (no es recomendable)
A diferencia de las otras opciones de identidad de correo electrónico, esta configuración permite que los usuarios adopten la identidad de usuarios autenticados con solo proporcionar la dirección de correo electrónico de estos cuando se les solicite. Cuando se selecciona esta opción, los correos electrónicos verificados no prevalecen sobre los correos electrónicos no verificados.
Esta opción es la menos segura y la más proclive a ataques de suplantación. Sin embargo, no impide que los agentes diligentes detecten a los posibles impostores: basta con que busquen el icono de la marca de verificación de color verde que aparece junto a los mensajes del perfil del usuario, que indica si este está autenticado.
Si selecciona esta opción, el estado de verificación de las identidades de correo electrónico recopiladas de los canales de mensajería deja de ser fiable porque un impostor puede perfectamente aparecer después de que un usuario es autenticado y adueñarse de su estado de correo electrónico en una interacción de mensajería posterior. Eso quiere decir que los ataques de suplantación de identidad tienen mayores probabilidades de tener éxito y los agentes tienen escasa oportunidad de saber si el usuario final es realmente quien alega ser. Sin embargo, las identidades de correo electrónico verificadas siguen prevaleciendo sobre las identidades de correo electrónico no verificadas y la identidad de correo electrónico se elimina del registro de usuario del impostor.
Emitir JWT con direcciones de correo electrónico
- external_id: (requerido) esta es la cadena alfanumérica única que se puede usar para identificar a cada usuario. Consulte Seleccionar la ID externa para usar en los JWT emitidos a los usuarios.
-
scope: (requerido) el alcance de acceso de la persona que llama. El único valor válido es
user
. - name: (opcional) el nombre del usuario. Si se incluye el nombre en la carga de JWT, Zendesk podrá mostrar el nombre del usuario en el espacio de trabajo de agente para ayudar a los agentes a proporcionar un soporte más personalizado.
-
email: (requerido) la dirección de correo electrónico del usuario que está iniciando sesión. Debe ser única para el usuario.
Hágala coincidir con la dirección de correo electrónico principal del usuario en el espacio de trabajo de agente. No se permite incluir una dirección de correo electrónico secundaria en los JWT.
-
email_verified: (opcional) dato que indica si el usuario final en cuestión ha probado que es dueño de la dirección de correo electrónico. Si desea que los usuarios finales tengan identidades de correo electrónico verificadas, los JWT que emita deberán contener la declaración
email
y la declaración"email_verified": true
.
{
"external_id": "12345678",
"email": "janes@soap.com",
"email_verified": true,
"name": "Jane Soap",
"scope": "user"
}
Resolver los conflictos entre las ID externas y los correos electrónicos en los JWT
Zendesk utiliza la ID externa como el identificador principal, y las direcciones de correo electrónico se usan solo si no se encuentra ninguna coincidencia para la ID externa.
Idealmente, la autenticación de la mensajería debe realizarse con el propósito de evitar conflictos. Por ejemplo, al seleccionar las ID externas y las opciones de configuración del correo electrónico en Zendesk, asegúrese de que no van a entrar en conflicto. Sin embargo, si una dirección de correo electrónico presentada en un JWT ya está asociada con una ID externa distinta, Zendesk rechaza el JWT y el intento de inicio de sesión del usuario final falla. Cuando esto sucede, la conversación comienza con el usuario en un estado no autenticado.
- Actualice el JWT para que use un valor
external_id
o una direcciónemail
diferente.O BIEN
- Borre al usuario que tiene la
external_id
problemática para que esta quede libre y pueda usarla otro usuario final. Consulte Delete User in the Sunshine Conversations API.
167 comentarios
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.
0
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
Iniciar sesión para dejar un comentario.