Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Objective: To embed Qlik’s sheet page into our secure SSL web site.
Approach: Using the Qlik Sense Ticket method.
Referencing Web Sites:
https://community.qlik.com/blogs/qlikviewdesignblog/2014/12/08/tickets-in-qlik-sense
https://github.com/braathen/qlik-auth-net
Servers:
Qlik Sense Server
Port 80: Host our web site.
Port 4243: Qlik Sense Proxy
Port 8888: Qlik Sense HTTP Web
Web server running Apache
Port 443: HTTPS Web To Proxy both our web site and Qlik Sense HTTP Web
Flow to achieve
User access our website via browser will hit Apache server with SSL. https://domain1.com
Apache will proxy the web site to Port 80 on Qlik Sense Server.
User sees the login page and login.
From backend, our web site will connect to Port 4243 on Qlik Sense Server, https://servername:4243/qps/ticket?Xrfkey=<KEY> to get the ticket.
Then our web site will return the URL in IFRAME carrying the ticket number. https://domain1.com/single/?appid=b573113a-1462-4763-9a59-bd3ebb9685e7&sheet=EcZvAHs&opt=currsel&Qli...<TICKET>
IFRAME will hit Apache with SSL as well to request Qlik sheet page, Apache will proxy to Port 8888 on Qlik Sense Server. http://servername:8888/single/?appid=b573113a-1462-4763-9a59-bd3ebb9685e7&sheet=EcZvAHs&opt=currsel&...<TICKET>
Apache retrieves the Qlik Sheet page result and send them to the user’s browser.
Error & Troubleshooting
We failed to see the Qlik Sheet page.
If we tried to access the URL in the IFRAME directly (copy the URL and access it), some javascript errors prompted.
When inspecting the error in Chrome, we saw the following error, which try to access wss://domain1.com/app/b573113a-1462-4763-9a59-bd3ebb9685e7?reloadUri=https://ct.ac2wave.com/single/?appid=...<TICKET>.
Since WSS is using port 443, when tried to change it to HTTPS, we are getting error like below.
If we change the hostname in the URL to internal hostname, we managed to see the page displayed nicely.
Question:
Does our proxy approach work?
Is the URL we use in the IFRAME correct?
“wss://” web socket is using port 443, what does single.js trying to reload? It seems like something is missing in the routing.
You can not use Single api directly with ticket. First render an image from your proxy's content library(for example leaf.png) to get the session cookie. Then your browser authenticates with cookie and your embeeded objects will work.