Autenticación de usuarios en la conversación web

Con la seguridad de conversación web habilitada, puede autenticar clientes de forma segura por ID de usuario.

El comportamiento predeterminado de la integración de conversación web es identificar usuarios exclusivos estableciendo el valor de la propiedad user_id que se envía como parte de cada mensaje al asistente. Para obtener más información, consulte Gestión de la información de identidad de usuario en la conversación web.

Este enfoque es suficiente para realizar un seguimiento de los usuarios exclusivos con fines de facturación, pero no es seguro y no debe utilizarse para el control de acceso. Si habilita la seguridad de conversación web, utilice JSON Web Tokens (JWT) para autenticar de forma segura a los usuarios y controlar el acceso a las funciones de su asistente que requieren autorización.

Autenticación con la reclamación sub

Para utilizar este método para autenticar usuarios, primero debe habilitar la característica de seguridad de conversación web. Para obtener más información, consulte Habilitación de la seguridad de conversación web.

Cuando crea un JWT para la conversación web, debe especificar un valor para la reclamación sub (asunto), que identifica al usuario. Para usuarios anónimos, puede utilizar un ID exclusivo generado.

Cuando genere un ID de usuario para un usuario anónimo, asegúrese de guardar el ID generado en una cookie para evitar que se facture varias veces para el mismo cliente.

Cuando la integración de conversación web recibe un mensaje firmado con este JWT, almacena el ID de usuario de la reclamación sub como system_integrations.channel.private.user.id en acciones y integrations.channel.private.user.id para el diálogo. Para obtener más información, consulte Variables de integración.

Si los clientes deben iniciar sesión antes de iniciar una sesión de conversación web, puede utilizar el ID de usuario autenticado como valor de la reclamación sub al crear la JWT. Puesto que la integración de conversación web valida el JWT y utiliza la reclamación sub para establecer el ID de usuario, su asistente ahora puede confiar en system_integrations.channel.private.user.id en acciones y en integrations.channel.private.user.id en diálogo para el control de acceso seguro a las funciones que requieren autorización.

Después de especificar el JWT para la conversación web, no puede cambiar a un JWT con una reclamación sub diferente durante la sesión. Si necesita añadir información de inicio de sesión autenticado en medio de una sesión, puede almacenarla como parte de la carga útil de usuario en su lugar. Para obtener un ejemplo de cómo hacerlo, consulte Guía de aprendizaje: Autenticación de un usuario en medio de una sesión.

Facturación y privacidad

En los planes basados en el usuario, el ID de usuario se utiliza a efectos de facturación. (No puede utilizar el método de instancia updateUserID() para establecer el ID de usuario si la seguridad de conversación web está habilitada.) También se utiliza el mismo ID de usuario que el ID de cliente, que se puede utilizar para realizar solicitudes para suprimir datos de usuario. Puesto que el ID de cliente se envía en un campo de cabecera, el ID que especifique debe cumplir los requisitos para los campos de cabecera tal como se define en RFC 7230.

Si es necesario que cumpla los requisitos de GDPR, es posible que tenga que almacenar de forma persistente los ID de usuario anónimos generados, especialmente para los usuarios anónimos que posteriormente inician sesión con credenciales de usuario. El almacenamiento de estos ID de usuario le permite suprimir posteriormente todos los datos asociados con un cliente individual si se le solicita.

Para obtener más información sobre la facturación basada en el usuario, consulte Planes basados en el usuario explicados. Para obtener más información sobre la supresión de datos de usuario, consulte Etiquetado y supresión de datos.

Cierre de sesión

Para cerrar la sesión de un cliente, es necesario destruir la conversación web.

Si vuelve a cargar la página cuando un cliente cierra la sesión, llame al método de instancia destroySession() para eliminar cualquier referencia a la sesión actual de las cookies y el almacenamiento del navegador. Si no se llama a este método, la información protegida por el JWT no corre peligro, pero el chat web intentará conectarse a la sesión anterior y fallará.

Si no realiza una recarga de página completa cuando un cliente cierra la sesión, llame al método de instancia destroy(). El método destroy elimina del DOM y de la memoria del navegador la instancia actual del chat web configurado para el userID actual. A continuación, llame al método de instancia destroySession().