En los casos de uso que requieren la creación de conversaciones en sesiones autenticadas, es posible pasar los datos de identidad del cliente como indica la guía de instalación avanzada, pero en ocasiones se requiere un nivel de seguridad adicional que asegure que la identidad provista tiene su origen en la organización correspondiente y que no fue interceptado por algún ente malicioso para suplantar a otro cliente.
Esta capa extra de seguridad se consigue utilizando un
HMAC generado en el servidor del sitio (no puede ser creado en el navegador). El HMAC se debe generar para cada cliente que ingrese al sitio privado.
Este tipo de instalación exige un desarrollo por parte del administrador del sitio. El departamento de informática debe estar al tanto y participar de la evaluación de este tipo de este desarrollo.
Pasos para la validación de identidad
1. HMAC por cliente
En el lado del servidor web se debe generar un HMAC por cada usuario que ingrese al sitio y pasar el resultado a Let's Talk.
Lo primero es definir un valor único de identificación por cliente, por ejemplo el email, el RUT o un identificador interno del sistema (a este valor lo llamaremos uid).
Con este valor de identificación se generará el HMAC utilizando la función de hash
SHA256 más un secreto que debe ser solicitado a
soporte@ltmenessenger.com.
El secreto debe tratarse con extremo cuidado y no publicarse ni en la web ni almacenarse en los repositorios de código.
A continuación se muestra un ejemplo para Ruby y el uid email:
- # client_hash
- OpenSSL::HMAC.hexdigest(
- 'sha256', # funcion de hash
- 'secreto-de-organizacion', # llave secreta (¡mantener segura!)
- current_user.email # uid del cliente
- )
Esto es un ejemplo, pero la implementación real depende de las herramientas disponibles en el servidor.
2. Inicialización de clientes validados
Una vez que el servidor genera el client_hash (HMAC), este valor debe agregarse a los scripts de inicialización de manera adicional a los otros valores que se envían.
De esta manera Let's Talk recibirá el client_hash que servirá como firma para validar la solicitud de autenticación del cliente.
El siguiente es un ejemplo de inicialización del chat utilizando el HMAC:
- window.$LT(function(messenger) {
- messenger.setByName('[widget-name]');
- messenger.settings({
- client_hash: 'ad86bb13364e8b9ffbdd16f7091ee9d68ff87557cdba48f6423e64aed5da8c11',
- organization_subdomain: '[subdomain]',
- consumer: {
- key: '[consumer_key]',
- token: '[consumer_token]'
- },
- visitor: {
- name: 'Client Demo',
- email: 'client.demo@letsta.lk',
- attrs: {
- one_key: 'one_value',
- another_key: 'another_value'
- }
- }
- });
- };
3. Activación de la validación por HMAC
Una vez desarrolladas las funciones descritas en los pasos 1 y 2 se debe activar el control validación de identidad en la página de ajustes en las configuraciones avanzadas. De esta forma el sistema omitirá cualquier instrucción de inicialización de clientes que no contenga el HMAC.