Cómo securizar el Web Chat de watsonx Assistant
Proteger tu Web Chat es clave para garantizar la seguridad de los datos de tus usuarios y evitar accesos no autorizados. watsonx Assistant permite agregar una capa adicional de seguridad que autentica cada mensaje y confirma que proviene del chat integrado en tu sitio web.
Este proceso utiliza firmas digitales para validar el origen de los mensajes, asegurando que nadie pueda interceptarlos o manipularlos. A continuación, te explicamos cómo configurarlo paso a paso.
Pasos para configurar la seguridad
Paso 1: Crear un par de claves RSA
watsonx Assistant utiliza una firma RSA con SHA-256 (RS256) para la encriptación de las comunicaciones. Este método utiliza un par de claves RSA (privada y pública):
- Clave privada: se usa para generar firmas digitales.
- Clave pública: verifica dichas firmas.
Ejecuta los siguientes comandos para generar las claves privada y pública:
Paso 2: Habilitar la seguridad en watsonx Assistant
- Ve a la pestaña Seguridad en la página de configuración de la integración del Web Chat.
- Activa el interruptor Secure your web chat.
- Agrega tu clave pública en el campo Your public key.
La clave pública se utiliza para verificar que los datos que afirman provenir de tu instancia de Web Chat realmente provienen de ella.
Paso 3: Firmar un JSON Web Token (JWT)
Usa tu clave privada para firmar un JWT. Este token se enviará con los mensajes desde tu sitio web como prueba de su origen.
El JWT debe incluir los siguientes valores en su payload:
- iss: Representa el emisor del JWT. Este valor debe ser una cadena sensible a mayúsculas.
- sub: Representa el usuario. Este valor debe ser único dentro del contexto del emisor. Además, se envía como user_id.
- exp: Representa la fecha y hora de expiración del JWT. Asegúrate de establecer un tiempo de vida corto.
Para implementar la seguridad, crearemos un microservicio en Node.js que se encargará de generar el JWT. Este servicio nos permitirá obtener el token dinámicamente cuando nuestra aplicación web lo necesite.
Disclaimer: Este es solo un ejemplo de implementación y no representa una solución lista para producción. Hay otros aspectos importantes a considerar, como la gestión segura de las claves, la protección contra ataques, y las políticas de expiración de tokens. La implementación puede variar dependiendo del diseño específico de la solución.
Experimento: Comparación con y sin seguridad
Vamos a crear una aplicación con dos páginas. Cada una contendrá el widget de Web Chat: una con seguridad habilitada y otra sin ella.
Página sin seguridad
Página con seguridad
Ahora que has implementado un servicio para generar un JWT firmado, debes actualizar tu instancia de Web Chat para incluir el JWT con cada mensaje que se envíe. Una vez habilitada la seguridad del Web Chat, cualquier mensaje que no esté firmado con la clave privada correcta será rechazado.
En el HTML de tu sitio web, actualiza el script de integración del Web Chat para especificar un nuevo JWT al inicio de cada sesión y también cada vez que el JWT existente expire.
La forma más sencilla de hacerlo es suscribiéndote al evento identityTokenExpired
y generando un nuevo JWT cuando se reciba este evento. El evento identityTokenExpired
se activa en los siguientes casos:
Para más detalles, consulta la documentación oficial aquí: Habilitar la seguridad del Web Chat.
Resultados
En la siguiente imagen se pueden observar dos escenarios:
- Izquierda: Un widget de Web Chat sin la configuración de seguridad. Este ejemplo falla, mostrando el mensaje de error:
Something went wrong. Assistant isn’t available right now.
- Derecha: Un widget con la seguridad correctamente configurada y funcionando como se espera.
Conclusiones
Implementar seguridad en el Web Chat de watsonx Assistant ofrece múltiples beneficios. Primero, asegura la protección de datos sensibles, garantizando que los mensajes sean auténticos y encriptados, lo que protege la privacidad de los usuarios. Además, permite la prevención de uso no autorizado, restringiendo el acceso al Web Chat exclusivamente a tu sitio web, lo que elimina riesgos asociados con accesos externos. Por último, ayuda al cumplimiento de normativas, reforzando la seguridad para ajustarse a estándares de protección de datos.
Habilitar estas medidas no solo es una práctica recomendada, sino que resulta esencial para proteger tanto a los usuarios como a la plataforma frente a interacciones no seguras.