Conectar Laravel con Qlik Sense (Parte 2)
¿Cómo conectar Laravel con Qlik Sense?. En este capítulo realizaremos los pasos necesarios para conectar nuestra aplicación desarrollada bajo el popular framework para PHP llamado Laravel.
En el servidor de Qlik Sense
Crear regla de acceso al stream
Permitir a los usuarios de un determinado directorio acceder con permisos de lectura al stream que queremos ser consumido desde la aplicación cliente.
QMC > Streams > Edit stream
Asignar acceso al usuario
Asignar una licencia al usuario que se autenticará desde la aplicación cliente.
QMC > Licence usage summary > User access rules > User access allocations
Generar certificados
Exportar los certificados para la máquina cliente: ingresar el nombre de la máquina, asignar una contraseña, seleccionar la opción de incluir la clave secreta y elegir el formato PEM.
QMC > Certificates
Los certificados generados se almacenan en la ruta C:\ProgramData\Qlik\Sense\Repository\Exported Certificates\<hostname>.
Autorizar máquina cliente
Ingresar los siguientes valores a la lista blanca: nombre de máquina, IP y subdominio de la máquina cliente.
QMC > Virtual proxies > Edit virtual proxy
Para que surta efecto los cambios se debe reiniciar el servidor de Qlik Sense a través del administrador de tareas de Windows en la pestaña Servicios.
Configurar el firewall
En la máquina donde se ejecuta el servidor de Qlik Sense, debemos ir al firewall de Windows para habilitar los siguientes puertos:
- 80
- 443
- 4248
- 4244
- 4243
- 4242
- 4747
- 4343
- 4748
En el servidor de la aplicación
Configurar certificados
Una vez conectados a la máquina cliente por SSH ejecutar el siguiente comando para crear el directorio que alojará los certificados previamente exportados desde la QMC.
sudo mkdir -p /home/user/qliksense/certificates/hostname
Copiar los certificados a la máquina cliente, los cuales fueron genrados previamente desde la QMC.
Asignar permisos al usuario asociado al servidor web de aplicaciones, en este caso, www-data, para Apache.
sudo chown -R www-data:www-data /home/user/qliksense/certificates
Crear aplicación
Previamente se había creado una instancia EC2 en AWS con sistema operativo Ubuntu (16.04), Apache (2.2), PHP (5.6) y CURL (7.47)
- Instalar Laravel Framework (5.1).
- Agregar dependencia guzzlehttp/guzzle (6.2) en Laravel (opcional).
- En el archivo .env definir las siguientes variables: QLIK_PROXY_REST_URI=https://my.subdomain.com:4243/qps/
QLIK_CERT_PASSWORD=myS3cretPassw0r4
QLIK_CERT_FILE=/home/user/qliksense/certificates/hostname/client.pem
QLIK_CERT_KEY_FILE=/home/user/qliksense/certificates/hostname/client_key.pem
QLIK_CERT_TYPE=PEM
Integrar Laravel con Qlik Sense
A partir del script Connecting with PHP de la documentación oficial de Qlik, se realizó una aplicación que tiene la siguiente lógica:
- Valida que el usuario se haya autenticado en la aplicación.
- Valida que el usuario tiene acceso a Qlik Sense (tabla local donde se relacionen los usuarios autorizados).
- Mediante una petición CURL con los datos especificados en las variables QLIK_* definidas en el archivo .env, autenticar el usuario ante el servidor de Qlik Sense.
- Si la autenticación es exitosa, obtener la respuesta del servidor de Qlik Sense y extraer los encabezados.
- Obtener el valor del item ‘X-Qlik-Session’.
- Crear una cookie con el nombre ‘X-Qlik-Session’, el valor obtenido en el paso anterior, tiempo de expiración 1 hora, ruta ‘/’, y dominio de la apliación ‘subdomain.com’.
- Redirigir el usuario a la página principal de la aplicación.
- En esta página principal debe existir un enlace a las páginas secundarias donde se ha embedido cada unos de las visualizaciones de Qlik Sense mediante iframe.
Alfredo Cortes
Es un tema interesante, aunque se podría mostrar más detalles de la lógica en Laravel.